¿Cómo sumar rangos variables en Macros?

Necesito sumar las cantidades de una tabla, pero no siempre el número de columnas es el mismo, lo he intentado de la siguiente forma pero el resultado me da 0

Sub Suma()

Dim FinCuenta As Long
FinCuenta = ActiveSheet.Cells(Rows.Count, "F").End(xlUp).Row
    Range("F" & FinCuenta + 1).Select
    ActiveCell.FormulaR1C1 = "Total"
    Range("G" & FinCuenta + 1).FormulaR1C1 = "=SUM(Tabla2[Precio])"
End Sub

Respuesta
1

Esta macro hace sumas dinámicas sin importar cuantas filas añadas o quites la macro hace la suma sobre lo que quede, como en tu ejemplo se entiende que la suma se hace sobre la columna F esta macro solo trabaja para esta columna.

Sub sumar_datos()
columna = Range("f1").Column
Set datos = Range("f1").CurrentRegion
With datos
'----poner si tiene encabezados--------------------------------------
    Set datos = .Cells(2, columna).Resize(.Rows.Count - 1, 1)
'-------------------------------------------------------------------------
filas = .Rows.Count
.Cells(filas + 1).Formula = "=sum(" & .Columns(1).Address & ")"
End With
End Sub

En verdad soy muy mala en esto, solo tengo un par de meses que comencé a programar macros; he copiado macro tal cual pero al momento de ejecutarla me bota el siguiente error: "Error de compilación: No se ha definido Sub o Function"

He tratado de buscar el por qué, pero no he tenido éxito.

Puedes poner una imagen del error y en que línea se produce, eso suele pasar porque tienes 2 macros con el mismo nombre o una de las variables se llama igual que una macro.

He revisado, y los nombres no se repiten

Le hice un leve cambio a la macro y la probé varias veces este es el resultado

como ves la macro funciona

Sub sumar_datos()
columna = Range("f1").Column
Set INFO = Range("f1").CurrentRegion
With INFO
'----poner si tiene encabezados--------------------------------------
    Set INFO = .Cells(2, columna).Resize(.Rows.Count - 1, 1)
'-------------------------------------------------------------------------
filas = .Rows.Count
.Cells(filas + 1).Formula = "=sum(" & .Columns(1).Address & ")"
End With
End Sub

1 respuesta más de otro experto

Respuesta

Columnas, ¿filas?

Lo que hace tu macro es:

Busca la ultima celda con un valor escrito en la columna F

Un celda más abajo (que estará en blanco) escribe Total

Una celda a la derecha (columna G) suma el total del campo Precio de la Tabla2

Cualquier cosa que esté mal estará en tus datos... no en la macro

La macro que muestras no hace nada en torno a las "columnas" variables.. lo hace en torno a las filas... y en realidad lo unico que hace es ubicarse debajo de los datos... el hecho de sumar "TODOS" los datos lo hace todo la función SUM... fíjate que datos hay en la columna G, si son verdaderamente números...

En resumen, muestra la tabla, los datos, etc... quizás ni siquiera hayan datos numéricos en la tabla... no se puede saber nada sobre los datos mirando una macro... se tienen que ver los datos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas