Necesito crear una macro excel que haga lo siguiente:

Sumar cantidades de celdas variables de una columna, hacia abajo, hasta llegar a una celda vacía. Ahí colocar el subtotal (la suma de las celdas hasta la vacía) en la celda contigua a la derecha de la vacía, en la columna contigua a la derecha que será columna de subtotales) y seguir colocando de esta forma subtotales hasta que no existan mas celdas con valores.

1 respuesta

Respuesta
4

Te mando mi solución, y sigue mi ejemplo: Tengo la columna A con importes hasta una fila indeterminada y entre ellos hay algunas celdas en blanco (en la celda A1 hay un encabezado). Ejecuta esta macro y todo listo!

Sub sumar()
Range("a65000").End(xlUp).Offset(1, 0).Value = "final"
Range("a2").Select
Do While ActiveCell.Value <> "final"
suma = suma + ActiveCell.Value
If ActiveCell.Value = "" Then
ActiveCell.Offset(0, 1).Value = suma
suma = 0
End If
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = "final" Then
ActiveCell.Offset(0, 1).Value = suma
suma = 0
End If
Loop
ActiveCell.ClearContents
End Sub

recuerda finalizar y puntuar la consulta

Gracias Luis!

Funcionó perfecto, Abuso de tu generosidad con una última consulta.

Como sería la macro para que esos subtotales estuvieran en la celda contigua a la vacía pero siendo subtotales de la suma de las celdas que están debajo, hasta la próxima vacía.

Saludos, Tito

Eso difiere de tu pregunta original pero de todas formas...¿en qué celda empiezan los datos? Si lo quieres de esa manera tenemos que empezar teniendo una celda en blanco...

Gracias Luis!

Es que se me ocurrió mejorar la presentación poniendo los subtotales arriba en las filas de cada título y los datos debajo.

El primer título está siempre en fila 6, sus datos desde fila 7 Columna L hasta una fila aleatoria, por ejemplo la 10 misma columna L.

La fila siguiente 11 es nuevo título con sus datos desde fila 12 a otra aleatoria por ejemplo fila 15 en la misma columna L.

Entonces debo sumar de L7 hasta L10 y que quede esa suma en M7, la fila del título, e columna contigua a los datos. Luego sumar desde L12 hasta L15 y la suma en M12 y así sucesivamente una docena de títulos con sus datos, serán en total 120 filas.

Gracias de nuevo y disculpa.

Bueno pues esta es la solución. Ejecuta esta macro y todo listo!

Sub parciales()
Range("l65000").End(xlUp).Offset(1, 0).Value = "final"
Range("l6").Select
Do While ActiveCell.Value <> "final"
ubica = ActiveCell.Address
ActiveCell.Offset(1, 0).Select
Do While IsNumeric(ActiveCell)
suma = suma + ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
Range(ubica).Offset(0, 1).Value = suma
suma = 0
Loop
ActiveCell.ClearContents
End Sub

recuerda finalizar y puntuar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas