今回は、ExcelのSUMPRODUCT関数を使った応用テクニックを紹介します。複数条件を組み合わせた集計や、配列を使った高度な計算をスマートに行いたい方に役立つ内容です。
SUMPRODUCT関数の基本的なしくみ
SUMPRODUCT関数は、複数の配列の対応する要素を掛け合わせ、その合計を返す関数です。基本的な構文は次のとおりです。
=SUMPRODUCT(配列1, 配列2, …)
たとえば、単価の列と数量の列を掛けて合計を求める場合、SUMPRODUCT(B2:B10, C2:C10)
とすると、B列とC列の各行を掛け合わせた値の合計が返されます。SUMIFやCOUNTIFとは異なり、複数の条件や複雑な計算を一つの数式で処理できるところが魅力です。
SUMPRODUCT関数で複数条件の合計を出す
2つの条件を組み合わせて合計する
複数条件で合計を求める場合、SUMPRODUCT関数に論理式(TRUE/FALSE)を組み込むことで実現できます。
例:A列が「東京」かつB列が「商品A」の場合の売上(C列)を合計する。
=SUMPRODUCT((A2:A100="東京")*(B2:B100="商品A")*C2:C100)
条件式を `( )` で囲んで `*` でつなぐことで、AND条件の集計ができます。TRUE(1)×TRUE(1)×値 =
値、いずれかがFALSE(0)の行は結果が0になるため、条件に合致した行だけが合計されます。
OR条件で集計する
いずれかの条件に当てはまる行を集計する場合は、`+` を使ってOR条件を表現できます。
=SUMPRODUCT(((A2:A100="東京")+(A2:A100="大阪"))*(C2:C100))
ただし、東京かつ大阪に両方一致する行(通常はあり得ませんが)は二重カウントされるため、条件の設計には注意が必要です。
SUMPRODUCT関数で条件付きカウントを行う
SUMPRODUCT関数は合計だけでなく、条件を満たすセルの個数を数えることもできます。COUNTIFSと同様の結果を得られますが、より柔軟な条件設定が可能です。
例:A列が「東京」でB列が「商品A」の行数を数える。
=SUMPRODUCT((A2:A100="東京")*(B2:B100="商品A"))
条件式の積(*)を使うだけで、条件に合った行数が返されます。
SUMPRODUCT関数の便利な応用テクニック
重複を除いたデータ件数を数える
重複を除いた一意のデータ件数を数えたいときにも、SUMPRODUCT関数が活躍します。
=SUMPRODUCT(1/COUNTIF(A2:A100,A2:A100))
COUNTIF関数が各値の出現回数を返し、1をその値で割ることで「1回の出現なら1、2回の出現なら0.5×2=1」というように、重複を考慮しながら合計すると、一意のデータ件数が得られます。ただし、空白セルが含まれる場合はエラーになるため、空白がある場合は以下のように条件を追加します。
=SUMPRODUCT((A2:A100"")/COUNTIF(A2:A100,A2:A100&""))
特定の文字列を含むセルを集計する
部分一致での集計にはCOUNTIFのワイルドカードを使えますが、SUMPRODUCT関数ではISNUMBER関数とSEARCH関数を組み合わせる方法があります。
=SUMPRODUCT((ISNUMBER(SEARCH("東京",A2:A100)))*C2:C100)
SEARCH関数は指定した文字列の位置を返し、見つかればISNUMBERがTRUEを返す仕組みです。大文字・小文字を区別しない検索が可能です(区別する場合はFINDを使用)。
日付の範囲で集計する
特定の期間内のデータを集計したいとき、SUMPRODUCT関数に日付条件を加えられます。
=SUMPRODUCT((B2:B100>=DATE(2025,1,1))*(B2:B100<=DATE(2025,3,31))*C2:C100)
B列が2025年1月1日から3月31日の範囲にある行のC列を合計します。期間指定の集計はSUMIFSでも対応できますが、SUMPRODUCT関数を使うと数式の可読性が高まることがあります。
SUMPRODUCT関数を使うときの注意点
- 配列サイズを揃える:引数に指定する配列の行数・列数が異なると、エラー(#VALUE!)が返されます。範囲指定の際は行数が一致しているか確認してください。
- テキストと数値の混在:数値として集計したい列にテキストが混在していると正確な結果が得られないことがあります。VALUE関数などで数値に変換するか、データ入力の段階で統一しておくと安心です。
- 大量データでのパフォーマンス:SUMPRODUCT関数は配列全体を処理するため、行数が多いとExcelの動作が重くなることがあります。必要な範囲だけを指定するよう心がけてください。
まとめ
SUMPRODUCT関数は、複数条件の合計・カウント、重複除外の件数計算、部分一致集計、日付範囲での絞り込みなど、Excelのデータ集計において幅広く活用できる関数です。条件を
`*`(AND)や `+`(OR)でつなぐ考え方さえ押さえれば、さまざまな集計シーンに応用できます。配列サイズの一致やデータの型に注意しながら、業務の集計作業に取り入れてみてください。