首页 > 解决方案 > 在所述数组的列中聚合二维数组的一部分

问题描述

我有一个二维数组,具有灵活的尺寸:

arr_emissions(1 to n, 0 to m) 

其中n22 或更大,并且m6 或更大。

在最小的情况下,列m = 6应该包含列的总和m = 2 - 5。我当然可以简单地添加它们,但由于数组的维度是灵活的,我想实现一个更健壮的方法,它最好不要循环整个数组。

我希望实现原生的application.WorksheetFormula.Sum(). 我在这个答案中看到了一个实现,但这仅适用于完整的行或列。

示例: 我有arr_emissions(0 to 111,1 to 6). 它填充在从 1 到 111 的循环中。

数组中的数据如下:

(1,1) #3-4-2020#  'a date value
(1,2) 1,379777
(1,3) 0
(1,4) Empty
(1,5) Empty

标签: arraysexcelvbasum

解决方案


不知道这是否有帮助,但这需要一个源数组v,然后w用对应行的 2-4 列的总和填充一个新数组v

Sub x()

Dim v, i As Long, w()

'just to populate source array
v = Range("A1").CurrentRegion.Value

ReDim w(1 To UBound(v, 1))

For i = 1 To UBound(w)
    'each element of w is sum of columns 2-4 of corresponding row of v
    w(i) = Application.Sum(Application.Index(v, i, Array(2, 3, 4)))
Next i

'write w to sheet
Range("G1").Resize(UBound(w)) = Application.Transpose(w)

End Sub

在此处输入图像描述


推荐阅读