本文へスキップ
totonoe

Excel・表計算を整える

中級

SUMPRODUCTを整える

= 「掛けて、足す」を行ごとに見せる。条件は1/0に化ける

SUMPRODUCT は「対応する行同士を掛けて、それを全部足す」だけの関数です。中級者がつまずくのは、条件式 (区分="A") が裏で TRUE/FALSE の配列になり、掛け算に巻き込まれると 1/0 に化けるところ。ここでは明細を編集しながら、行ごとの掛け算→合計の流れと、条件が 1/0 に変わる瞬間をそのまま見て確かめられます。計算も数式づくりもすべてこの端末の中で完結します(送信ゼロ)。

i

TLDR — 30秒で分かる

掛けて、足すを行ごとに可視化。条件はTRUE/FALSE→1/0に化ける仕組みが見える。基本はSUMIFS、書けない条件だけSUMPRODUCT。

主な機能

  • 明細の「数量×単価」を行ごとに分解して可視化
  • 条件式のTRUE/FALSE→1/0変換を明示
  • AND(掛け算)/OR(足してから判定)の書き分け
  • 単位数加重平均レシピ(成績評価)
  • SUMIFSとの使い分け表(正直な結論つき)
  • ありがち失敗(#VALUE!)3種と直し方・送信ゼロ

BASIC

① 掛けて足すを見る

明細は自由に書き換えられます。右の分解ビューで「数量×単価=行の積」が1行ずつ光りながら現れ、最後に合計されます。

明細(品名・数量・単価) 書き換えるそばから再計算(送信ゼロ)
A B C
1 品名 数量 単価
2
3
4
5
6
分解ビュー(数量 × 単価 = 行の積) 入力するそばから計算(送信ゼロ)
合計

=SUM(B2:B6*C2:C6) + Ctrl+Shift+Enter の古い配列数式は、もう不要です。SUMPRODUCT なら普通に Enter で確定できます。

RESULT

計算中…

=SUMPRODUCT(B2:B6,C2:C6)

この表と同じ配置(A2:C6 にデータ)なら、そのまま Excel / Google スプレッドシートに貼れます。

CONDITION

② 条件をかける(1/0のトリック)

「区分」列を足しました。=SUMPRODUCT((区分="A")*数量*単価) を体験。TRUE/FALSE の列 → ×1/×0 に変換される列を分解ビューに挟んで表示します。

明細(区分・数量・単価) 区分を書き換えて試せる(送信ゼロ)
A B C
1 区分 数量 単価
2
3
4
5
6
分解ビュー(区分の条件 → 1/0 → 掛け算) 入力するそばから計算(送信ゼロ)
合計(生き残った行だけ)
=SUMPRODUCT((A2:A6="A")*B2:B6*C2:C6)

(区分="A") は Excel の内部では {TRUE;FALSE;TRUE;FALSE;TRUE} のような TRUE/FALSE の配列になります。それを掛け算(*)に巻き込むと、TRUE は 1、FALSE は 0 として計算される——これが SUMPRODUCT の正体です。

AND(両方の条件)= 掛け算

=SUMPRODUCT((A2:A6="A")*(B2:B6>10)*C2:C6)

条件をそのまま掛け算でつなげば AND(すべて満たす行だけ 1×1=1 で生き残る)。条件が1つでも FALSE(0)なら、その行の積は 0 になります。

OR(どちらかの条件)= 足し算してから>0、または +

=SUMPRODUCT(((A2:A6="A")+(A2:A6="B")>0)*C2:C6)

OR は掛け算ではなく足し算(+)でつなぎ、0より大きければ「どちらか当てはまる」と判定。1+1=2 も 0より大きいので、>0 で 1/0 に戻すのがコツです。

SUMIFS と SUMPRODUCT、どっちを使う?

できること SUMIFS SUMPRODUCT
ワイルドカード(* ?) ○ 使える × 使えない(完全一致のみ)
OR条件(どちらか) △ 苦手(SUMIFS同士を足すなど回り道) ○ 得意(+ で表現できる)
別シート・閉じたブック参照 ○ 問題なし △ 閉じたブックだと#REF!になりやすい
計算速度(大きい表) ○ 速い(内部最適化あり) △ 遅くなりがち(配列を総なめ)
複雑な条件(列同士の掛け算等) × 苦手 ○ 得意(掛け算・関数を自由に組める)

正直な結論:基本は SUMIFS。ワイルドカードも使え、速く、読みやすいからです。SUMIFS では書けない条件(OR条件、列同士の掛け算、複雑な計算式を条件に混ぜたいとき等)に出会ったときだけ SUMPRODUCT に切り替える、で十分です。

RECIPE

③ 加重平均レシピ — 単位数で重みづけした平均点

=SUMPRODUCT(単位数,評点)/SUM(単位数) で、単位数の重い科目ほど平均に強く効く「加重平均」が出せます。単純平均との違いも見比べてください。

成績表(科目・単位数・評点) 書き換えるそばから再計算
A B C
1 科目 単位数 評点
2
3
4
5

単位数で重みづけした加重平均

(参考)単純平均 — 単位数を無視した場合

単位数の重い科目も軽い科目も同じ1票として扱うため、実際の成績評価とはズレることがあります。

PITFALLS

④ ありがち失敗と直し方

SUMPRODUCT で「動かない」ときは、だいたいこの3つのどれかです。

範囲の行数が揃っていない

B2:B6(5行)と C2:C10(9行)のように、渡す範囲の行数が違うと #VALUE! になります。コピペで範囲がずれた・後から行を追加した、のがよくある原因。

直し方:すべての範囲を同じ行数(同じ開始行・終了行)に揃える。テーブル機能(Ctrl+T)にしておくと行数が自動で揃います。

文字が混ざると #VALUE!

数量や単価の列に「10個」のような文字列が1つでも混ざると、掛け算ができずに #VALUE! になります。SUMIF系と違って「無視して計算」してくれません。

直し方:数値の列に文字を混ぜない。どうしても混在するなら N 関数や -- (二重マイナス)で数値に強制変換する上級テクニックもあります(コラム参照)。

全列参照(A:A)は激重

=SUMPRODUCT((A:A="A")*B:B*C:C) のように列全体を指定すると、Excelは100万行以上を全部掛け算しようとして極端に遅くなります。

直し方:A2:A1000 のように、実際にデータがある範囲だけを指定する。テーブル機能や名前付き範囲を使うと安全。

🎓 上級コラム:N関数と「--」(二重否定)

TRUE/FALSE の配列を数値の1/0に変換する方法は、掛け算(*)に巻き込む以外にもあります。N(A2:A6="A") は TRUE→1・FALSE→0 に変換する専用関数、--(A2:A6="A")(マイナスを2回)は「マイナスのマイナスは元の数値」という理屈で TRUE/FALSE を強制的に数値化する古くからのテクニックです。どちらも足し算(+)で条件をつなぐ OR 表現のときに使われることがあります。まずは掛け算(AND)・足し算+>0(OR)の基本形から慣れれば十分です。

SUMPRODUCT の基本

SUMPRODUCT は「掛けて、足す」。それだけです。

  1. 1

    配列数式を意識しなくていい関数

    SUMPRODUCT は数少ない「普通に Enter で確定できる配列計算」です。SUM(範囲1*範囲2) を Ctrl+Shift+Enter で確定する古い書き方より、事故が少なくおすすめです。

  2. 2

    条件式は TRUE/FALSE → 1/0 に化ける

    (範囲="A") は TRUE/FALSE の配列。それを算術演算子(* や +)に巻き込んだ瞬間だけ、1/0 の数値として扱われます。この変換タイミングを意識すると、AND(掛け算)・OR(足し算+>0)の書き分けが腑に落ちます。

  3. 3

    まずは SUMIFS、行き詰まったら SUMPRODUCT

    ワイルドカードが使え、速く、読みやすい SUMIFS を基本にしましょう。OR条件や複雑な計算式など、SUMIFS で書けない条件に出会ったときだけ SUMPRODUCT の出番です。

  4. 4

    動かないときは「範囲」と「型」を疑う

    #VALUE! のほぼすべての原因は、範囲の行数不一致か、数値の列に文字が混ざっていること。全列参照(A:A)は計算が終わらないほど遅くなることがあるので避けましょう。

🔒 表の中身・分解ビュー・集計結果・数式の生成は、すべてあなたのブラウザの中(純JavaScript)で完結します。入力した内容はサーバに送られません(送信ゼロ)。このツールは学習用の簡易再現で、Excel 本体の全仕様(配列の次元・スピル等)までは扱いません。

よくある質問

Q. SUMPRODUCTとSUMIFSはどう使い分けますか?

A. 基本はSUMIFSです。OR条件や「数量×単価の合計に条件を掛ける」など、SUMIFSで書けない集計のときだけSUMPRODUCTの出番です。本ツールに使い分け表があります。

Q. なぜ条件式が1と0になるのですか?

A. (範囲="A") はTRUE/FALSEの配列を返します。これが掛け算に巻き込まれると、TRUEは1・FALSEは0として計算されるため、条件に合う行だけが生き残ります。この変換の瞬間を本ツールで可視化しています。

Q. 複数条件のORはどう書きますか?

A. 掛け算(AND)ではなく足し算でつなぎ、((条件1)+(条件2)>0)*… のように判定し直します。単純に足すだけだと両方成立した行が二重に数えられる点に注意です。

Q. 配列数式(Ctrl+Shift+Enter)は必要ですか?

A. 不要です。SUMPRODUCTは普通にEnterで確定できる、昔からある配列計算の関数です。古いExcelでも動きます。

Q. #VALUE!になるのはなぜですか?

A. 範囲の行数が揃っていないか、数値のはずの列に文字(空白や単位つき)が混ざっているのが典型原因です。範囲の高さを揃え、数値列を確認してください。

Q. 入力したデータはどこかに送られますか?

A. いいえ。分解ビューの計算もすべてブラウザ内で完結します(送信ゼロ)。

入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。

RELATED TOOLS

続けて整える

KOINOBORI ECOSYSTEM

私たちが運営するサイト