SUMPRODUCT 完全ガイド — 複数条件の集計・加重平均・重複除外カウントを1関数で

関数

SUMPRODUCT 完全ガイド
複数条件の集計・加重平均・重複除外カウントを1関数で

SUMPRODUCT は「配列の積の合計」だが、実務では多条件集計・重複を除いたカウント・加重平均など SUMIFS では難しい計算を1式で解決できる強力な関数。知っておくと集計の幅が大きく広がる。

GASとの関係:reduce() + filter() の組み合わせが相当

GASでSUMPRODUCT相当の処理をするには array.reduce((sum, row) => sum + row[0]*row[1], 0) のような書き方になります。スプレッドシートで SUMPRODUCT のロジックを確認してからGASに移植すると設計が明確になります。

GASで自動化を学ぶ →
目次

SUMPRODUCT とは

複数の配列の対応する要素を掛け合わせ、その合計を返す関数です。本来の用途は「単価 × 数量 の合計」ですが、TRUE/FALSE の配列を使うことで多目的な集計関数として使えます。

=SUMPRODUCT(配列1, [配列2, ...])

// 基本:単価×数量の合計
=SUMPRODUCT(B2:B10, C2:C10)
// → B2*C2 + B3*C3 + ... + B10*C10 の合計

多条件集計(SUMIFS との違い)

SUMPRODUCT は OR 条件や配列を使った複雑な条件が書けます。

// SUMPRODUCT で「東京 OR 大阪」の売上合計(SUMIFS では難しい)
=SUMPRODUCT(((B2:B100="東京")+(B2:B100="大阪"))*(C2:C100))

// 「担当者が田中 かつ 売上が10万以上」
=SUMPRODUCT((A2:A100="田中")*(C2:C100>=100000)*C2:C100)

// 月ごとの売上合計(MONTH関数と組み合わせ)
=SUMPRODUCT((MONTH(A2:A100)=3)*C2:C100)

重複を除いたカウント(COUNTUNIQUE の代替)

// ユニークな顧客数(重複を除いてカウント)
=SUMPRODUCT(1/COUNTIF(A2:A100, A2:A100))

// 特定条件内のユニークカウント
=SUMPRODUCT((B2:B100="東京")*(1/COUNTIFS(A2:A100, A2:A100, B2:B100, "東京")))

加重平均を計算する

// 通常の AVERAGE(件数が重みになる)
=AVERAGE(C2:C100)

// 加重平均(売上金額で重み付けした平均単価)
=SUMPRODUCT(B2:B100, C2:C100) / SUM(C2:C100)
// B列=単価、C列=数量 の場合、正確な平均単価を計算

行番号・条件組み合わせで活用するテクニック

// 条件に合う行が何行目か(最初の1件)
=MATCH(1, (A2:A100="田中")*(B2:B100="東京"), 0) + 1

// SUMPRODUCT で TRUE/FALSE を 1/0 に変換してカウント
=SUMPRODUCT((A2:A100="東京")*1) // COUNTIF(A2:A100,"東京") と同じ

SUMPRODUCT vs SUMIFS — 使い分け

用途SUMIFSSUMPRODUCT
AND条件の合計◎ 読みやすい○ 書ける
OR条件の合計△ 2式の足し算が必要◎ 1式で書ける
重複除外カウント✗ 不可◎ 得意
加重平均✗ 不可◎ 得意
関数の組み合わせ△ 限定的◎ MONTH等と組み合わせ可
速度(大量データ)◎ 速い△ 重くなりやすい

実務でよく使うパターン

パターン1:月次売上レポートの多条件集計

// 2024年3月、東京支店の売上合計
=SUMPRODUCT(
 (YEAR(A2:A1000)=2024)*
 (MONTH(A2:A1000)=3)*
 (B2:B1000="東京")*
 C2:C1000
)

パターン2:顧客ユニーク数を月別に集計

// 3月にアクセスした顧客数(重複なし)
=SUMPRODUCT(
 (MONTH(A2:A1000)=3)/
 COUNTIFS(B2:B1000, B2:B1000, A2:A1000, A2:A1000)
)

パターン3:SKU×拠点の在庫金額合計

// 全SKUの(単価×在庫数)の合計
=SUMPRODUCT(B2:B500, C2:C500)

// 特定カテゴリのみ(D列がカテゴリ)
=SUMPRODUCT((D2:D500="A類")*B2:B500, C2:C500)

この知識をGASで活かす

GASでSUMPRODUCT相当の計算が必要な場合、まずスプレッドシートでロジックを確認し、GASの reducefilter に置き換える手順が確実です。重複除外カウントはGASなら new Set() で簡単に実装できます。

Free Newsletter

AIを業務に活かしたいなら
SMR-Labメルマガ

毎週火曜10時、コピペで使えるChatGPTプロンプト・
GASテンプレートをお届け。登録は1分・完全無料。

▶ 無料で登録する

📧 無料メルマガ登録

DX・AI活用のヒントを週1回お届け。登録特典:すぐ使えるプロンプト集&GASテンプレート。

登録情報は第三者に提供しません。いつでも配信停止できます。

目次