vba工作表函数的sumifs其中条件范围在sheet1和条件在sheet2
我正在尝试使用工作表函数sumifs的vba代码。 我有两张工作表,工作表1包含标准范围,工作表2包含标准。
第1页:
Group Year Cutomer Amount A 2012 Gold 1000 B 2013 Platinum 1250 C 2012 Gold 1500 B 2012 Platinum 1750 C 2013 Gold 2000 A 2013 Platinum 2250 C 2012 Gold 2500 A 2013 Platinum 2750 B 2012 Gold 3000 Sheet 2: 2012 2013 A Gold A Platinum B Gold B Platinum C Gold C Platinum
我的代码如下:
Sub SUMIFSTWOSHEETS() Dim i As Variant Dim condition As Range For i = 2 To 7 sheet2.Cells(i, 3) = WorksheetFunction.sumifs(sheet1.Range("d2:d10"), sheet1.Range("a2:a10"), sheet2.Cells(i, 1), sheet1.Range("c2:c10"), sheet2.Cells(i, 2), sheet1.Range("B2:B10"), sheet2.Range("c2")) sheet2.Cells(i, 4) = WorksheetFunction.sumifs(sheet1.Range("d2:d10"), sheet1.Range("a2:a10"), sheet2.Cells(i, 1), sheet1.Range("c2:c10"), sheet2.Cells(i, 2), sheet1.Range("B2:B10"), sheet2.Range("d2")) Next i End Sub
有了上面的代码,vba正在运行,但它只给出零作为答案。
我的回答如下:
2012 2013 A Gold 0 0 A Platinum 0 0 B Gold 0 0 B Platinum 0 0 C Gold 0 0 C Platinum 0 0
有人能帮我吗?
如果我正确理解了标签的位置,请尝试用sheet2.Range("c2")
sheet2.Range("c1")
和sheet2.Range("d2")
replacesheet2.Range("d1")
sheet2.Range("d2")
与sheet2.Range("d1")
。 它应该给你在Sheet2
的以下输出:
2012 2013 A Gold 1000 0 A Platinum 0 5000 B Gold 3000 0 B Platinum 1750 1250 C Gold 4000 2000 C Platinum 0 0
作为一个侧面说明,我不知道为什么你需要i
是Variant
:一个简单的Long
应该可以吗?
您正在求和的值应该是最后一个参数。 从而,
sheet2.Cells(i, 3) = WorksheetFunction.sumifs(sheet1.Range("a2:a10"), sheet2.Cells(i, 1), sheet1.Range("c2:c10"), sheet2.Cells(i, 2), sheet1.Range("B2:B10"), sheet2.Range("c2"), sheet1.Range("d2:d10"))
我的问题是为什么你需要一个macros而不是只把公式放在Excel中。