我正在尝试创建一个在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),它使用数组中的最后一个范围计算所有单元格。我需要它来使用第一列中的第一个范围,第二列中的第二个范围等等。
如果有任何不清楚的话,我很抱歉,我是编码新手,这是我第一次发帖。如果我能做些什么来澄清我的问题,请告诉我!感谢您的帮助!
答案 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