Sub syuukei() ’”品名”AND”L2”の2つの条件を満たしている時だけ goukei する Dim goukeI Dim hida Dim migi For migi= 3 To 6 ’現場では 30行くらいある goukei = 0 For hida = 3 To 13 If Range("E" & hida).Value = Range("K" & migi).Value And Range("H" & hida).Value = Range("L2").Value Then goukei = goukei + Range("F" & hida).Value End If Range("L" & migi).Value = goukei Next Next End Sub
受講生さんの投稿
(投稿ID: 2234)
現場では SUMIFS関数を使用する機会が多く
動画のSUMIF関数をマクロで・・を参考にもう一つの条件をANDで追加してみました。
しかし、ANDで指定している”L2”ひとつの時は下記のマクロでOKですが
L2~CX2 まであると どうしていいのかわかりません。
列を行(hida) みたいに 変数にできないでしょうか。Coulmns指定??・・基礎マクロ範囲であれば教えてください。
表(hida)データ表
↓が集計表(migi)となり 品名と各列(F-1.F-2・・)二つの条件が合致するもののみ goukeiする。
K列 L列 M列 N列・・・CX列
1 (1行目空白)
2 品名 F-1 F-2 F-3.・・・
3 AA/1 500
4 AA/2 200
5 BB/1 0
6 CC/1 500
Sub syuukei() ’”品名”AND”L2”の2つの条件を満たしている時だけ goukei する
Dim goukeI
Dim hida
Dim migi
For migi= 3 To 6 ’現場では 30行くらいある
goukei = 0
For hida = 3 To 13
If Range("E" & hida).Value = Range("K" & migi).Value And Range("H" & hida).Value = Range("L2").Value Then
goukei = goukei + Range("F" & hida).Value
End If
Range("L" & migi).Value = goukei
Next
Next
End Sub
SUMIFS関数式を埋め込むと以下になりますが
これもL~CXまで書くのは少しナンセンスかと・・
Sub keisan()
Dim gyo
For gyo = 3 To 6
'実際は50列位あるのでこの書き方は面倒
Range("L" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("M" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("N" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("O" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("P" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("Q" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("R" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("S" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("T" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Next
End Sub
ゲストさんのコメント
(コメントID: 3638)
>列を行(hida) みたいに 変数にできないでしょうか。Coulmns指定??・・基礎マクロ範囲であれば教えてください。
↑発展編1で扱っている Offset ですね。