所以,这是我到目前为止写的:
Sub somme()
Dim a, i As Integer, Data, Rng As Range
a = InputBox("How many cells for the square?")
Set Data = Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(a - 1, a - 1))
For Each cell In Data
cell.Value = Int((100 + 100 + 1) * Rnd - 100)
Next
For i = 1 To a
Set Range(ActiveCell + i, ActiveCell.End(xlDown)) _
.Offset(1, 0).Value = "=SUM(R[-a]C:R[-1]C)"
Next
End Sub
我想在下面的单元格中对每个列进行求和,适用于任何大小的范围。
答案 0 :(得分:0)
使用相同的方法,您可以使用内置的WorksheetFunction.Sum添加总和,并在每列的末尾查找:
Set sums = Range(ActiveCell.Offset(a, 0), ActiveCell.Offset(a, a - 1))
For Each cell In sums
cell.Value = WorksheetFunction.Sum(Range(Split(cell.Address, "$")(1) & cell.Row - a & ":" & Split(cell.Address, "$")(1) & cell.Row))
Next
P.S。我有机会在您提出的问题代码中强调一些事项:
Set Range(ActiveCell + i, ActiveCell.End(xlDown)).Offset(1, 0).Value = "=SUM(R[-a]C:R[-1]C)"
1)不要使用关键字Set
,一个用于将变量设置为一个对象(不是一个字符串进入一个单元格,因为你不需要任何东西);
2)ActiveCell
,没有任何其他规范,默认情况下将返回属性Value
。因此,如果您刚刚填写范围A1:A4
,那么代码行:
Range(ActiveCell + i, ActiveCell.End(xlDown))
不会是预期的
Range("A5")
而是随机数字和语法错误的混合(只是为了给你一个想法,它会像Range(76,5)
)。
编辑 - 如果要插入Excel函数而不是硬编码结果
Set sums = Range(ActiveCell.Offset(a, 0), ActiveCell.Offset(a, a - 1))
For Each cell In sums
cell.Value = "=SUM(" & Split(cell.Address, "$")(1) & cell.Row - a & ":" & Split(cell.Address, "$")(1) & cell.Row - 1 & ")"
Next