如何在特定范围的每一列下方的单元格中执行功能?
How to execute a function in the cell below every column of a specific range?
所以,这是我到目前为止写的:
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
我想对正下方单元格中的每一列求和,适用于任何大小的范围。
使用相同的方法,您可以通过使用内置 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
,没有任何其他说明,默认情况下 return 属性 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
所以,这是我到目前为止写的:
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
我想对正下方单元格中的每一列求和,适用于任何大小的范围。
使用相同的方法,您可以通过使用内置 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
,没有任何其他说明,默认情况下 return 属性 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