0

我正在尝试在 4 值维度 (4,1) 的 excel 列中累积值的总和。

所以,我构造了下面的代码。对于 Result 侧列中的第一行,它应该与原始数组中的值相同。但是,一旦它大于第一行,它应该获取结果的前一个元素(i-1)并将当前列元素(i)添加到它。

VBA 告诉我下标超出范围:/ 我不知道为什么......所以我什至不知道我的代码是否符合我的要求。

Sub CumulativeSum()
    Dim i As Integer
    Dim j As Integer
    Dim rColumn() As Variant
    Dim result() As Variant
    ReDim result(1 To 4)
    rColumn = Worksheets("Sheet1").Range("E1:E4").Value2

    For i = 1 To 4
        result(1) = rColumn(1, 1)
        For j = 2 To 3
            result(j) = rColumn(j, 1) + result(j - 1)
        Next j
   Next i
   Dim dest As Range
   Set dest = Worksheets("Sheet1").Range("F1")
   dest.Resize(4, 1).Value = result
End Sub
4

2 回答 2

2
Sub CumulativeSum()

    Dim dest As Range
    Dim i As Integer
    Dim j As Integer
    Dim rColumn() As Variant
    Dim result() As Variant
    ReDim result(1 To 4)
    rColumn = Worksheets("Sheet1").Range("E1:E4").Value2

    result(1) = rColumn(1, 1)
    For j = 2 To 4
        result(j) = rColumn(j, 1) + result(j - 1)
    Next j

    Set dest = Worksheets("Sheet1").Range("F1")
    dest.Resize(4, 1).Value = Application.Transpose(result)

End Sub
于 2013-04-16T00:57:04.787 回答
1

没有足够的代表来添加评论但是..您收到错误的原因是因为 Cells 的语法是 Cells([Row],[Column])。您将其输入为 Cells([Column],[Row])。

尝试 Range(Cells(1, 5), Cells(4, 5)) 代替。

于 2014-10-08T19:52:40.327 回答