Formula para sumar celdas selecionadas, contiguas o no

7 envíos / 0 nuevos
Último envío
JoaoM
Imagen de JoaoM
Offline
última acción: Hace 2 semanas 13 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 2750
Formula para sumar celdas selecionadas, contiguas o no

Tengo una plantilla
Quiero la formula para que solo sume las celdas que yo seleccione



Pretendo una formula para que SOLO sume las celdas que yo vaia seleccionando.
Pueden ser contiguas o no o en varias columnas

Gracias

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 22 mins 1 seg
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 9595
SUMA

La función SUMA permite sumar diferentes celdas, teclea =SUMA(

y luego mantén pulsada la tecla [Ctrl] mientras vas seleccionando las celdas que quieras sumar

=SUMA(D2;E8;H5;H11;M8;M4;J10;J5;H1;F7;F16;C12)

¿realmente era esto lo que preguntabas?

 

Data Tools Suite
datos y tablas con Excel

Cron
Imagen de Cron
Offline
última acción: Hace 2 horas 4 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 11090
Quizás lo que pides sea que

Quizás lo que pides sea que se te recalcule en la celda que tú quieras la suma de todo lo que tengas seleccionado en cada momento. En realidad, esto lo hace Excel automáticamente. Adjunto una imagen donde se ve dónde lo calcula (aunque se puede configurar para que presente otros resultados. Yo lo tengo por defecto y da tres resultados: promedio, recuento y suma)

suma automática de celdas seleccionadas Excel

Pero si lo quieres poner en una celda, sería algo más o menos así:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim a As Double
Dim c As Range

a = 0
For Each c In Target
a = a + c.Value
Next
Cells(1, 7).Value = a

End Sub

Lo que pasa es que el resultado (aquí te lo pone en G1, que es la celda que corresponde con Cells(7,1)) es efímero. Cuando toques otra celda, se recalculará. Si quieres que permanezca, entonces habría que condicionar que la suma la haga solo si la selección está en el rango que te interese.

 

Un saludo

AdjuntoTamaño
Image icon captura.jpg22.51 KB
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 22 mins 1 seg
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 9595
Hola Cron¿Qué te parece esto

Hola Cron

¿Qué te parece esto otro?

Application.WorksheetFunction.Sum(Selection)

Te ahorras el bucle (aunque fallará si seleccionas algo que no sea sumable como un gráfico o algo por el estilo)

si quieres limitarlo sólo a unas columnas, puedes combinarlo en la misma instrucción con Intersect

Cells(1, 7).Value = Application.WorksheetFunction.Sum(Intersect(Selection, Range("C:F")))

Pero coincido totalmente contigo en lo poco recomendable y arriesgado de basar algo en una selección de celdas, algo que estará cambiando continuamente.

 

 

Data Tools Suite
datos y tablas con Excel

JoaoM
Imagen de JoaoM
Offline
última acción: Hace 2 semanas 13 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 2750
Hola Paco.Si, segun tu

Hola Paco.

Si, segun tu explicacion eso mismo es:

LA celda x, tien esta formula y tengo (Ej.) 6 celdas para sumar. selecciono la 1ª luego con Ctrl+Click voy seleccionando las demas y la celda que tiene la formula va sumando mientras yo voy seleccionando

La formula que me indicas arriba no funciona de la forma que dices; scribo =SUMA y voy seleccionando las celdas a sumar y nada hace porque tambien las celdas hoy son unas y luego pueden ser otra, no las mismas.

 CRON, está perfecta tu apreciacion, fue eso que pidi.  NO sabia lo dela barra de estado, pero ahí no se puede hacer que presente en formato moneda? como lo presenta en la celda con el formato

 La ultima de Paco es que solo intersed las entre C y F. Si pisas fuera de ese rango te manda error en esa linea.

 Todo en la pequeña macro de CRON, hace lo pretendido.

A los dos millon de gracias. si algo mas van a dejar, vendre para la prueba

Cron
Imagen de Cron
Offline
última acción: Hace 2 horas 4 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 11090
En la barra de estado te suma

En la barra de estado te suma en el formato en el que están los números a sumar. Si todos están en formato moneda, el resultado en la barra de estado te lo dará en ese formato.

Un saludo

 

Rectifico: El formato en el que te presenta el dato en la barra de estado es el formato que tenga la primera celda que selecciones si la selección es de corrido. Si es celda a celda, el formato será el de la última que selecciones. Al menos eso es lo que me ha parecido entender de las pruebas que he hecho.

Para frikis: ¿Será que el cálculo (y el formato) los dispara el evento onmousedown?

JoaoM
Imagen de JoaoM
Offline
última acción: Hace 2 semanas 13 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 2750
Disculpas por no haber dado

Disculpas por no haber dado por terminado el tema

Tengo esto así funcionando como esperaba de un prencipio

'Suma celda por celda segun se va seleccionando cada celda, sin usar la tecla Ctrl+Click
'Al seleccionar alguna celda vacia, la O11 donde hace la sumatoria, se coloca vacia
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CeldaSuma = "O11" 'celda donde va sumando la selección. Esta celda tiene formato personalisado Bs.S* #.##0,00_ ;Bs.S* -#.##0,00_ ; ;_ @_
If Target.Count = 1 Then
    If Target.Value = 0 Then
        Application.EnableEvents = False
            Range(CeldaSuma).ClearContents
        Application.EnableEvents = True
    Else
        If IsNumeric(Target.Value) And Target.Address(False, False) <> CeldaSuma Then
            Range(CeldaSuma).Value = Target.Value + Range(CeldaSuma).Value
        End If
    End If
End If
End Sub