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

时间:2012-03-21 08:14:34

标签: excel vba excel-vba

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

我该怎么做?

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

enter image description here

3 个答案:

答案 0 :(得分:8)

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

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

<强>快照

enter image description here

这是一个单线VBA代码,可以做同样的事情。

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

答案 1 :(得分: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

示例:

enter image description here

答案 2 :(得分:1)

你也可以在没有VBA的情况下做这样的事情:

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

这将对公式所在的单元格上方的所有单元格求和。