• ベストアンサー

【エクセル関数】複数条件(月別・個人別)で集計したい

例えば、以下のような表があるとします。 A        B       C 2005/10/12  山田一郎  5,000 2005/10/17  鈴木花子  1,000 2005/10/28  鈴木花子  2,000 2005/11/03  山田一郎  1,000 2005/11/17  山田一郎  2,000 2005/11/19  鈴木花子  4,000 これを、次のように仕訳したいのですが、      山田一郎  鈴木花子 10月  5,000     3,000 11月  3,000     4,000 どのような関数を使えばうまく集計することができますでしょうか? 自分なりに、SUMIFやSUMPRODUCTを使って考えてみたのですが、 うまく集計することができませんでした。 どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

上記の解答の表がAA1:AC3として AB2=SUMPRODUCT((TEXT($A$1:$A$6,"mm月")=$AA2)*($B$1:$B$6=AB$1)*($C$1:$C$6)) これをAB2:AC3にコピー

noname_3815
質問者

お礼

できました~! TEXTなんていう関数もあるんですね。勉強になりました。 どうもありがとうございました!

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

データ例 A1:C10 2005/10/12 山田一郎 5,000 2005/10/17 鈴木花子 1,000 2005/10/28 鈴木花子 2,000 2005/11/3 山田一郎 1,000 2005/11/17 山田一郎 2,000 2005/11/19 鈴木花子 4,000 2005/10/18 山田一郎 1,000 2005/10/22 山田一郎 3,000 2005/11/22 山田一郎 3,000 山田一郎 10月分 =SUM(IF((MONTH(A2:A10)=10)*(B2:B10="山田一郎"),C2:C10,0)) と入れてSHIFT+CTRL+ENTER(3つのキーを同時に押す) 配列数式の利用です。 山田一郎 11月分 =SUM(IF((MONTH(A2:A10)=11)*(B2:B10="山田一郎"),C2:C10,0)) と入れてSHIFT+CTRL+ENTER(3つのキーを同時に押す) 結果は 9000 6000 =SUM(IF((MONTH(A$2:A$10)=ROW()-2)*(B$2:B$10=B$2),C$2:C$10,0))として、下方向へ複写し(本質問ではA12まで2か月分)、山田一郎の分を複数月分複写で出すことも可能です。 SUMPRODUCTでもできると思います。 D列に=MONTH(A2)で月数を出して(D10まで式複写して) =SUMPRODUCT((D2:D10=10)*(B2:B10="山田一郎")*(C2:C10)) で9000になりました。 =SUMPRODUCT(MONTH(A2:A10)=10)*(B2:B10="山田一郎")*(C2:C10) ではうまくいきませんでしたが。

noname_3815
質問者

お礼

こちらの方法でもできました! 「SHIFT+CTRL+ENTERで配列数式」など、初めて知りました。 今回はNo.1の方法が私には合っているようですが、この配列数式も勉強してステップアップしたいと思います。 どうもありがとうございました。

  • banker_U
  • ベストアンサー率21% (17/78)
回答No.2

補助列で10月とかの列を作っておいて、ピボットテーブルを使いのがベストでしょう。

noname_3815
質問者

お礼

補助列を作るとなると一手間増えてしまうので、今回はNo.1の方法が私には合っているようです。 でもピボットテーブルをまだ使ったことがないので、この機会にちょっと勉強してみようと思います。 どうもありがとうございました。