- ベストアンサー
複数条件の行の値を集計する「マクロ」のコード
複数条件の行の値を集計する「マクロ」のコードを教えて下さい。 セルA列には販売員、Bには販売日、C列には売上金額のリストで A列とB列の値が一致している場合その合計を各々のD列に表示させたいと考えております。 例(田中さんが5/5に2件で1000円の売上の場合) 田中 5/5 500 合計1000 田中 5/5 500 合計1000 リストは売上を立てた順に並んでいます。 分かりづらくて申し訳ございません。 宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ご利用のエクセルのバージョンが不明ですが、エクセル2007以降を使い D2: =SUMIFS(C:C,A:A,A2,B:B,B2) 以下コピー と記入しておきます。使用上の注意は特にありません。 エクセル2003以前では D2: =SUMPRODUCT((A$1:A$1000=A2)*(B$1:B$1000=B2), C$1:C$1000) 以下コピー と記入しておきます。ただしリストが3000行以上あるときは、この方法は適当ではありません。 マクロの作成例: マクロを使えば、手でやるとメンドクサイ手順もやらせるだけで簡単に出来ます。 sub macro1() dim r as long r = cells(rows.count, "A").end(xlup).row range("E:E").insert shift:=xlshifttoright range("E2:E" & r).formula = "=A2&B2" with range("D2:D" & r) .formula = "=SUMIF(E:E,E2,C:C)" .value = .value end with range("E:E").delete shift:=xlshifttoleft end sub #補足 「一致した場合」の事しか質問されていませんが、もしもA・B列が一致「するものが無い」場合は「合計を記入したくない」という意図だったなら、数式を =IF(COUNTIF(E:E,E2)>1,SUMIF(E:E,E2,C:C),"") などのようにもう一工夫します。
お礼
エクセルのVerを書き忘れてしまい大変申し訳ございませんでした。 早速活用させていただいております。 仕事中には作成する時間がない為、大変助かりました。 昨晩も2時ごろまで、ネットで調べながら試行錯誤していたのですが、なかなか形にならずで・・・ ご親切に教えて頂き本当にありがとうございました!