如何使用VBA对所选范围的列求和?

use*_*868 6 excel vba excel-vba

在我选择了包含数值的范围后,我希望通过VBA =SUM在每列的底部输入一个公式,即在最后一个选定行之后的行上.对于每列,它应该对整个选择的相应列中的所有值求和.

我怎样才能做到这一点?

现在,我正在使用宏录制器给出的代码:ActiveCell.FormulaR1C1 = "=SUM(R[-10]C:R[-1]C)".问题是当我的范围大于10行时,它不会考虑底部10以上的行.

在此输入图像描述

Sid*_*out 8

这是一个简单的非VBA方法.

选择要求总和的单元格,然后按Alt- =.

快照

在此输入图像描述

这是一个单线VBA代码,可以完成相同的任务.

Sub AutoSum()
    '~~> After you select your range
    Application.CommandBars.ExecuteMso ("AutoSum")
End Sub
Run Code Online (Sandbox Code Playgroud)


Jea*_*ett 6

这有效:

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
Run Code Online (Sandbox Code Playgroud)

例:

在此输入图像描述