使用多个数组的Sumifs公式

时间:2018-03-16 18:39:50

标签: arrays excel vba loops sumifs

我正在尝试创建一个在VBA中包含多个数组的sumifs公式。代码如下:

MyArray(1) = "A"
MyArray(2) = "B"
MyArray(3) = "C"
MyArray(4) = "D"

Set SumArray(1) = Range("E:E")
Set SumArray(2) = Range("F:F")
Set SumArray(3) = Range("G:G")

For i = 1 To UBound(MyArray)
For j = 12 To 14
For y = 1 To UBound(SumArray)



Cells(i + 7, j + 1).Value = WorksheetFunction.SumIfs(SumArray(y),Range("A:A"), "Unknown", Range("B:B"), MyArray(i)) + _
WorksheetFunction.SumIfs(SumArray(y), Range("A:A"), "Medical", Range("B:B"), MyArray(i))

Next y
Next j
Next i

我的代码几乎按照我需要的方式工作。问题是,对于SumArray(y),它使用数组中的最后一个范围计算所有单元格。我需要它来使用第一列中的第一个范围,第二列中的第二个范围等等。

如果有任何不清楚的话,我很抱歉,我是编码新手,这是我第一次发帖。如果我能做些什么来澄清我的问题,请告诉我!感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您没有将前一个循环的结果添加到后续循环中,只是覆盖了之前的循环。

MyArray(1) = "A"
MyArray(2) = "B"
MyArray(3) = "C"
MyArray(4) = "D"

Set SumArray(1) = Range("E:E")
Set SumArray(2) = Range("F:F")
Set SumArray(3) = Range("G:G")

For i = 1 To UBound(MyArray)
    For j = 12 To 14
        Cells(i + 7, j + 1).Value = 0
        For y = 1 To UBound(SumArray)
            Cells(i + 7, j + 1).Value = Cells(i + 7, j + 1).Value + WorksheetFunction.SumIfs(SumArray(y), Range("A:A"), "Unknown", Range("B:B"), MyArray(i)) + _
            WorksheetFunction.SumIfs(SumArray(y), Range("A:A"), "Medical", Range("B:B"), MyArray(i))
        Next y
    Next j
Next i