0

ワークシート関数 sumifs を使用して vba コードを作成しようとしています。2 つのシートがあり、シート 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

誰かが私を助けることができますか?

4

3 に答える 3

1

タブの配置が正しく理解できたら、 と を に置き換えてみsheet2.Range("c2")てください。に次の出力が表示されます。sheet2.Range("c1")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でいいのですか?

于 2013-08-04T15:36:58.407 に答える
1

合計する値は、最後のパラメーターにする必要があります。したがって、

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"))

私の質問は、数式を Excel に入れるだけでなく、なぜマクロが必要なのかということです。

于 2013-08-05T00:48:39.310 に答える