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
Lun, 07/11/2016 - 14:11
#1
Formula para sumar celdas selecionadas, contiguas o no
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?
------
Ya sé Excel, pero necesito más.
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)
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
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.
------
Ya sé Excel, pero necesito más.
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
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?
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
En el archivo anexo tengo un datos que es unico y otro que es de movimientos...necesito saber cuanto fue mi ejecucion en dos fechas....muchas gracias
Muchas gracias Paco.
Gracias!!! Era justo lo que necesitaba!
Gracias, fue muy útil ♥
Muchas gracias por hacer las cosas más fácilmente, sin exceso de palabras solo lo concreto.
Muchas gracias amigo, queria tomarme el tiempo para agradecerte asi como tu te tomastes el tiempo para ayudar a los demas, tu comentario y solucion tambien me ayudo a mi
Muchas gracias me ha venido genial.
Muchas gracias fue de gran ayuda tu comentario