在我选择了包含数值的范围后,我希望通过VBA在每列的底部输入一个=SUM
公式,即在最后一个选定行之后的行上。对于每列,它应该对整个选择的相应列中的所有值求和。
我该怎么做?
现在,我正在使用宏录制器提供的代码:ActiveCell.FormulaR1C1 = "=SUM(R[-10]C:R[-1]C)"
。问题是当我的范围大于10行时,它不会考虑底部10以上的行。
答案 0 :(得分:8)
这是一个简单的非VBA方法。
选择要求总和的单元格,然后按 Alt - = 。
<强>快照强>
这是一个单线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
示例:
答案 2 :(得分:1)
你也可以在没有VBA的情况下做这样的事情:
=SUM(OFFSET(INDIRECT(CELL("address")),1-ROW(),0,ROW()-1,1))
这将对公式所在的单元格上方的所有单元格求和。