ExcelでSUMPRODUCTを複数条件の集計に使い続けてはいけない理由――SUMIFSに書き換えると速くなる
複数条件で合計を取るために、こんな数式がよく使われます:
=SUMPRODUCT((A2:A100="東京")*(B2:B100="4月")*C2:C100)「SUMIFSを知らなかったとき」または「古いExcelで書いたから」という理由でそのまま残り続けているケースが多いです。
SUMPRODUCT乱用が引き起こす3つの問題
問題① 処理が遅い
SUMPRODUCTは配列全体を一度に計算してから合計します。行数が多いほど、通常のSUMIFSより処理が重くなります。
大量データでは計算完了までのタイムラグが体感できます。
問題② 数式が読みにくい
`(A2:A100="東京")*(B2:B100="4月")*C2:C100` という書き方は、「TRUE/FALSEを1/0に変換して掛け算することで条件フィルターを実現している」という仕組みを知らないと読めません。
SUMIFSなら条件範囲と条件値が明示的に書かれるため、意図が伝わります。
問題③ 条件を追加するたびに式が複雑になる
SUMPRODUCTに条件を追加するには `*(条件範囲=値)` をさらに掛け算します。条件が3〜4個になると数式が長くなり、どこが正しいか確認しにくくなります。
解決策:SUMIFSに書き換える
' SUMPRODUCT(複数条件)
=SUMPRODUCT((A2:A100="東京")*(B2:B100="4月")*C2:C100)
' SUMIFS(同じ意味)
=SUMIFS(C2:C100, A2:A100, "東京", B2:B100, "4月")SUMIFSは「合計範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, ...」という構造で、条件の追加が直感的です。
複数条件の件数カウントにはCOUNTIFSを使います:
=COUNTIFS(A2:A100, "東京", B2:B100, "4月")SUMPRODUCTを使うべき場面
SUMPRODUCTが有効なのは、条件に演算が必要なケースです:
' 10000以上の値だけの合計
=SUMPRODUCT((C2:C100>=10000)*C2:C100)このような「行をまたいだ配列演算」はSUMIFSでは書けません。また、「複数の範囲の積を合計する」という本来の用途にも適しています。
まとめ
| 用途 | 推奨 |
|------|------|
| 複数条件で合計・カウント | SUMIFS / COUNTIFS |
| 配列演算が必要な計算 | SUMPRODUCT |
| 条件が1つの場合 | SUMIF / COUNTIF |
「複数条件の集計にSUMPRODUCTを使っている」と気づいたら、SUMIFSへの書き換えを検討してください。数式が短くなり、処理速度も改善されます。
もしこの記事が役に立ったら、スキ♡をポチっとしていただけると励みになります。
フォローしていただくと、同じような実務直結のExcel記事をお届けします。
IT実務ラボ|「なぜそうするか」の理由まで、丁寧に。
