• ベストアンサー

EXCEL表を関数で集計する方法を教えてください

以下のような表があるとします。 会社名 日付  金額 A社  9/1 10,000 A社  9/1 30,000 A社  9/3 20,000 B社  9/1 10,000 C社  9/4 30,000 C社  9/4 20,000 C社  9/5 30,000 C社  9/5 20,000 これを、以下のように、会社名と日付で集計したいのですが 会社名 日付  金額 A社  9/1 40,000 A社  9/3 20,000 B社  9/1 10,000 C社  9/4 50,000 C社  9/5 50,000 関数でやる方法をお教えください。 よろしくお願いします。

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

  • ベストアンサー
  • zenjee
  • ベストアンサー率47% (50/106)
回答No.2

一番上のデータが セルA2……A社、セルB2……9/1、セルC2……10,000 だとすると、セルD2に =IF(AND(A2=A1,B2=B1),"",SUMPRODUCT((A$2:A$9=A2)*(B$2:B$9=B2)*(C$2:C$9))) と入力し、あとD列下方にプルダウンコピーします。 これは基本的にはmshr1962さんの回答と同じですが、最初に IF(AND(A2=A1,B2=B1),"", を入れたのは、D列に同じ答え、例えばA社、9/1、50,000がD2、D3に重複して計上されるからです。 ただし、この式が成り立つためには、データを第1順位「日付」、第2順位「会社名」の順に並べ替えておくことが条件で、そのようになってない場合は別の関数を使用する必要があり、かなり複雑になるので、ここでは省略します。 なお、余計なお節介ですがmshr1962さんの回答式のSUMPRODUCTの次に、最初の「( 」が1個脱落していたため、もしかしたら戸惑われたかも知れないので、老婆心ながら付け加えておきます。

kt1
質問者

補足

お二方とも、ご回答ありがとうございます。 お教えいただいた方法で、見事に望んでいたことができました。 大変助かりました。 しかし、わからないことがありますので、追加で教えてください。SUMPRODUCTの働きについてです。 SUMPRODUCTという関数は、2つの表を掛け合わせ、その合計を出す関数だと思っておりました。使い方としては、SUNPRODUCT(範囲1,範囲2)といった具合で。 今回のような使い方は初めてみました。 SUMPRODUCTの中で、A列とB列とC列を掛けると、どうして、その合計がでるのでしょうか? よくわかっていないので、質問自体もピントはずれかもしれません。 どうか、素人にわかるように、お教えください。 よろしくお願いします。

その他の回答 (2)

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

#1のmshr1962です。 通常SUMPRODUCT関数は 売上=SUMPRODUCT(単価,数量) のような範囲同士の乗算に使います。 ただここに"範囲"でなく"範囲の条件"を設定することで COUNTIFやSUMIFと同様の計算が可能になります。 "範囲の条件"は結果がTrueかFalseの論理値になりますが *で複数の条件を加える(And条件)ことで1,0の数値に置き換えることができます。 SUMPRODUCTの場合は複数の条件でも設定が可能なので覚えておくと便利です。 例 =SUMPRODUCT(($A$2:$A$99="A社")*1)=COUNTIF($A$2:$A$99,"A社") ※条件が単独の場合は*1で1,0への置き換えが必要です。 =SUMPRODUCT(($A$2:$A$99="A社")*($B$2:$B$99))=SUMIF($A$2:$A$99,"A社",$B$2:$B$99) 同じ内容の種類をカウントする場合 =SUMPRODUCT(1/COUNTIF($A$2:$A$99,$A$2:$A$99)) ※サンプルのデータならA社、B社、C社の3件なので3が表示されます。

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

=SUMPRODUCT($A$2:$A$99=会社名のセル)*($B$2:$B$99=日付のセル)*($C$2:$C$99)) の様にすればOK ただし、メモリを食うので少し遅くなります。 ピボットテーブルの方が楽だと思いますが...