【Microsoft Excel】SUMPRODUCTによる条件付き集計


よく知られてるところだが

個人的にいつか忘れたときのための備忘録とする

(SEメモは全部そうなんだが)

 


 

EXCELの関数SUMPRODUCTは本来配列の積を求める役割の関数だが

配列を0と1だけにして残りを本来の配列に指定すると

条件付きの総和を求めることができる。

 

たとえば元表が以下の通りであったとする

 

このとき、

=SUMPRODUCT(((B2:B5)=0)*1, C2:C5)

でFLG(B列)が"0"のデータのみを対象にYEN(C列)を集計してこれる

 

この条件はほかにも使える。たとえば

=SUMPRODUCT(((B2:B5)=0)*1, *1*1, C2:C5)

ならDATE(D列)が2014/12/31以前のデータを対象にYEN(C列)を集計する

 

=SUMPRODUCT(((B2:B5)=0)*1, ((E2:E5)="田中")*1, C2:C

ならNAME(E列)が"田中"のデータを対象にYEN(C列)を集計する

 

フィルタとかかけていちいち選択範囲絞ったうえでSUMする等が面倒くさい場合に使う。

*1:D2:D5)<=DATE(2014,12,31