2012-03-21 36 views
6

Después de haber seleccionado un rango que contenga valores numéricos, quiero, a través de VBA, ingresar una fórmula =SUM en la parte inferior de cada columna, es decir, en la fila después de la última fila seleccionada. Para cada columna, debe sumar todos los valores en la columna correspondiente de la selección completa.¿Cómo sumar columnas para un rango seleccionado usando VBA?

¿Cómo puedo hacer esto?

En este momento, estoy usando el código proporcionado por el grabador de macros: ActiveCell.FormulaR1C1 = "=SUM(R[-10]C:R[-1]C)". El problema es que cuando mi alcance supera las 10 filas, no tomará en cuenta las filas que están por encima de las 10 inferiores.

enter image description here

Respuesta

6

Esto funciona:

Sub MakeSums() 
    Dim source As Range 
    Dim iCol As Long 
    Dim nCol As Long 
    Dim nRow As Long 

    Set source = Selection 

    nCol = source.Columns.Count 
    nRow = source.Rows.Count 
    For iCol = 1 To nCol 
     With source.Columns(iCol).Rows(nRow).Offset(1, 0) 
      .FormulaR1C1 = "=SUM(R[-" & nRow & "]C:R[-1]C)" 
      .Font.Bold = True 
     End With 
    Next iCol 

End Sub 

Ejemplo:

enter image description here

1

También podría hacer algo como esto sin VBA:

=SUM(OFFSET(INDIRECT(CELL("address")),1-ROW(),0,ROW()-1,1)) 

Esto sumará todas las celdas sobre la celda en la que existe la fórmula.

8

Aquí hay un enfoque simple sin VBA.

Seleccione las celdas en las que desee y pulse la suma Alt - =.

INSTANTÁNEA

enter image description here

Y aquí es un código VBA de una línea que hace lo mismo.

Sub AutoSum() 
    '~~> After you select your range 
    Application.CommandBars.ExecuteMso ("AutoSum") 
End Sub 
Cuestiones relacionadas