概要
SUMPRODUCT 関数は、「配列(セル範囲)同士を要素ごとに掛け算して、その合計を返す」関数です。
この「配列同士をまとめて計算する力」がとても強くて、内積・加重平均・条件付き合計・条件付きカウントなど、あらゆる“配列計算”の土台になります。
配列計算が苦手でも、「掛けて足す」を軸にイメージすると、一気に扱いやすくなります。
SUMPRODUCT の基本と「配列計算」の正体
書式と動き
=SUMPRODUCT(配列1, [配列2], [配列3], …)
- 配列1, 配列2 …:同じ大きさのセル範囲(行数・列数が一致していること)
SUMPRODUCT は、内部で次のように動きます。
- 配列1 と配列2 の「同じ位置」の要素同士を掛け算する
- その掛け算結果をすべて合計する
たとえば、B2:B5 と C2:C5 に数値が入っているとき、
=SUMPRODUCT(B2:B5, C2:C5)
は、実際には
= B2*C2 + B3*C3 + B4*C4 + B5*C5
を 1 本の式でやっているのと同じです。
配列計算としての代表パターン
1. 単純な「掛け算の合計」(売上集計など)
一番ベーシックな配列計算は、「単価 × 数量の合計」です。
=SUMPRODUCT(単価の範囲, 数量の範囲)
例:
=SUMPRODUCT(C2:C10, D2:D10)
- 各行で「C×D」を計算
- それを全部足した結果(売上総額など)
を返します。
これは「配列同士を掛けて足す」という SUMPRODUCT の基本動作そのものです。
2. TRUE/FALSE を 1/0 に変えて条件付き計算
SUMPRODUCT の真骨頂は、「条件を掛け算に埋め込んで配列計算する」ことです。
たとえば、「部門が“営業”の行だけの売上合計」を出したいとします。
=SUMPRODUCT(--(A2:A100="営業"), C2:C100)
ここでやっていることは:
(A2:A100="営業")→ TRUE/FALSE の配列を作る--(ダブルマイナス)で TRUE→1、FALSE→0 に変換- その 1/0 を売上列 C2:C100 に掛ける
- 営業行:1×売上=そのまま
- それ以外:0×売上=0
- 最後に SUMPRODUCT が全部足す → 営業だけの合計
という流れです。
この「条件を 1/0 にして掛け算でフィルタする」という発想が、配列計算のキモです。
3. 複数条件の AND・OR を配列で表現
条件を複数に増やしても、基本は同じです。
例:部門が「営業」かつ 月が「2025-09」の売上合計。
=SUMPRODUCT(--(A2:A100="営業"), --(B2:B100="2025-09"), C2:C100)
(A2:A100="営業")→ 営業なら TRUE(B2:B100="2025-09")→ 2025-09 なら TRUE- それぞれを
--で 1/0 に変換 - 1×1×売上 → 条件を両方満たす行だけが生き残る
AND 条件は「掛け算」、OR 条件は「足し算+比較」で表現できます。
これも全部「配列同士の計算」として SUMPRODUCT が処理してくれます。
配列計算としての SUMPRODUCT テンプレート
掛け算の合計(基本)
=SUMPRODUCT(範囲1, 範囲2)
例:単価×数量の合計
=SUMPRODUCT(C2:C10, D2:D10)
条件付き合計(1 条件)
=SUMPRODUCT(--(条件範囲=条件), 合計したい範囲)
例:部門が「営業」の売上合計。
=SUMPRODUCT(--(A2:A100="営業"), C2:C100)
条件付き合計(複数条件 AND)
=SUMPRODUCT(--(条件範囲1=条件1), --(条件範囲2=条件2), 合計したい範囲)
例:部門=営業 かつ 月=2025-09 の売上合計。
=SUMPRODUCT(--(A2:A100="営業"), --(B2:B100="2025-09"), C2:C100)
条件付きカウント(個数を数える)
合計したい範囲を「1 の配列」にすれば、カウントになります。
=SUMPRODUCT(--(条件範囲1=条件1), --(条件範囲2=条件2))
これは「条件を満たす行は 1、満たさない行は 0」として足し合わせているイメージです。
配列計算として使うときの注意点
配列のサイズは必ずそろえる
SUMPRODUCT に渡す配列(範囲)は、行数・列数が同じである必要がありま。
長さが違うと #VALUE! エラーや意図しない結果の原因になります。
文字列や空白の扱い
SUMPRODUCT は、数値以外の要素を 0 として扱うことがあります。
条件式で TRUE/FALSE を 1/0 に変換しているときは問題ありませんが、
本来数値であるべき列に文字列が混ざっていないかは注意しておきたいポイントです。
例題
問題1
B2:B5 に「単価」、C2:C5 に「数量」が入っています。
各行の「単価×数量」をすべて足した合計金額を、SUMPRODUCT 1 本で求める式を書いてください。
また、その式が内部でどのような計算(掛け算+足し算)をしているか、日本語で説明してください。
問題2
A2:A100 に「部門」、C2:C100 に「売上」が入っています。
部門が「営業」の行だけの売上合計を、SUMPRODUCT を使って求める式を書いてください。
ヒント:--(A2:A100="営業") を使います。
問題3
A2:A100 に「部門」、B2:B100 に「月(yyyy-mm)」、C2:C100 に「売上」が入っています。
部門が「営業」かつ 月が「2025-09」の売上合計を、SUMPRODUCT で求める式を書いてください。
AND 条件をどのように表現しているかも説明してみてください。
問題4
次の式は、どのような配列計算をしているか説明してください。
=SUMPRODUCT(--(D2:D50>=80), --(E2:E50="合格"))
「どんな条件を満たす行を 1 とみなし、最終的に何を数えているのか」を、初心者にも伝わるように言葉で説明してみてください。
問題5
次の式が #VALUE! エラーになりました。
=SUMPRODUCT(B2:B10, C2:C8)
なぜエラーになるのか、「配列計算」という観点から理由を説明してください。
(ヒント:SUMPRODUCT に渡している 2 つの範囲の“長さ”に注目してみてください。)
