Como poner un AUTOSUMA en Excel con código

Lo que me gustaría hacer es poner un AUTOSUMA con una macro, tengo que poner la suma de varias cantidades, pero no siempre son los mismos registros varían mucho, se que Excel es =suma(rango:rango), ¿pero con código como sería?

2 respuestas

Respuesta
1

Por ejemplo, supongamos que quieres poner en A5 la suma de las celdas A1 a A4. En código sería asi

range("A5") = WorksheetFunction.Sum(Range("A1:A4"))

No sé si es eso lo que necesitas. Si quieres más, puedo hacer el código para que detecte las celdas que hay que sumar, que sean el bloque de celdas con datos seguidos que haya inmediatamente arriba.

Buen dia

Fijate que las celdas son variadas, me ayudaría mucho si solo detecta cuales se deben de sumar.

Te lo agradecere mucho

Alfonso Pineda

Casi sería mejor si me mandaras el fichero para saber lo que hay que hacer exactamente e incluso dejártelo hecho. No es lo mismo por ejemplo si sabemos las celdas donde habrá autosuma al principio o si dependerán de otras operaciones que se hagan. Tampoco es lo mismo si se modificarán las celdas de la suma y es necesario que se autorecalculen las sumas que si la macro se hace después de hechas todas las modificaciones.

Hay dos o tres formas de hacerlo cada una con sus ventajas o inconvenientes.

Mándame el fichero a

A ver si me aclaro, entonces lo que quieres es que se sumen todos datos de cada columna. El primer sumando será siempre el de la fila 2 y el último es el que hay que calcular. También entiendo que las columnas tienen todas el mismo número de filas.

Creo que lo que quieres es esta macro:

Sub AutoSuma()
Dim FilaSumas As Integer
FilaSumas = Range("A" & Rows.Count).End(xlUp).Row + 1
Range("C" & FilaSumas).FormulaLocal = "=SUMA(C2:C" & FilaSumas - 1 & ")"
Range("D" & FilaSumas).FormulaLocal = "=SUMA(D2:D" & FilaSumas - 1 & ")"
Range("E" & FilaSumas).FormulaLocal = "=SUMA(E2:E" & FilaSumas - 1 & ")"
End Sub

La ejecutas una vez y te colocará la fórmula de la suma en las celdas de abajo. De esta forma podrás modificar los datos de alguna celda y se modificará la suma automáticamente. Mientras que si hubiéramos hecho la suma dentro de la macro no se actualizaría, habría que volver a ejecutar la macro para que se recalculasen las sumas.

Ya me dirás si es esto. Ahora te mando el fichero, la macro tiene asignada la combinación de teclas

CTRL + MAYUS + A

Respuesta

Años... y sin la respuesta a la cual me enfrente.

Sub AutoSuma()

Dim fila, columna As Integer, rango As Range, suma As Long
fila = ActiveCell.Row
columna = ActiveCell.Column
    Set rango = Range(Cells(6, columna), Cells(fila - 1, columna))
    suma = Application.WorksheetFunction.Sum(rango)
    ActiveCell.Value = suma
End Sub

pero hay que volver a ejecutar la macro para que vuelva a sumar.

ActiveCell.FormulaR1C1 = "=SUM(R[rango])" 'deberia funcionar para poner la formula directo en la celda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas