如何在特定范围的每一列下方的单元格中执行功能?

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