SUMPRODUCTを覚えた日から、Excelの「作業列」が一本もいらなくなった
「金額」という名前の列を、私はこれまで何百本、いや何千本つくってきただろう。
単価と数量が並んだ表があって、売上の合計を出したい。
やることは決まっている。まず横に空いた列を用意して、=単価×数量 を1行ぶん書く。
あとは下までコピー。最後にその列を SUM で足す。これで合計が出る。
長いことこれが当たり前だった。誰に習ったわけでもなく、自然とそうなっていた。
でも、この「金額」列は、本当は一度も要らなかった。
計算のためだけに一本増やして、行が増えるたびにコピー漏れを心配して、印刷のときは邪魔だから隠して。
そういう手間を、私はずっと自分で発明して、自分で背負っていた。
種明かしをすると、単価×数量 を掛けてから足す、という処理は、作業列ゼロ・たった1つのセルで終わる。
使う関数は SUMPRODUCT。名前だけは、たぶん見たことがあると思う。
ただ、多くの人はこれを「単価×数量の合計を出す関数」だと思っている。
私も長いあいだそうだった。それは、この関数の力の、たぶん1割も使っていない。
SUMPRODUCT の本当の凄みは、掛けて足すだけではない。
「東日本の、商品Aだけ」といった条件つきの集計。
「AまたはC」というOR条件。「数量が40以上の件数」というカウント。
行と列の交点を一気に埋めるクロス集計。テストの配点を効かせた加重平均。
これが全部、同じ1つの関数で書ける。しかも考え方は最後までひとつだけだ。
受託でよそ様の台帳を触っていると、この関数を知らないばかりに、作業列とオートフィルタと電卓で半日かけている現場によく出くわす。
答えは合っている。でも、かけている時間がもったいない。
まずは、私が長年やっていた「作業列だらけ」の表を見てほしい。

E列の「金額」が、まさにあの作業列だ。
これでも売上合計240,000円はちゃんと出る。出るのだが、列を一本増やしている。
そして厄介なのはこの先だ。「東日本のA商品だけ合計して」と言われた瞬間、この作り方では手が止まる。
作業列を足して、オートフィルタをかけて、目で拾って、電卓を叩く。ここで数字がずれる。
その全部を、SUMPRODUCT は1セルで肩代わりする。
ここから先は、掛けて足すの基本から、条件つき集計・クロス集計・加重平均まで、実際にExcelが返した本物の数字と数式でひとつずつ見せていく。
読み終わるころには、あなたの表からも「金額」という名前の作業列が消えているはずだ。
まず基本。SUMPRODUCTは「掛けて、足す」
最初に、いちばん素直な使い方から。
SUMPRODUCT は、指定した範囲どうしを同じ位置で掛け算して、その全部を足す関数だ。
書き方はこれだけ。
=SUMPRODUCT(単価の範囲, 数量の範囲)
さっきの表なら、こう書く。
=SUMPRODUCT(C4:C11, D4:D11)
C4×D4、C5×D5……と1行ずつ掛けて、その合計を返す。
つまり「金額」の作業列を作ってから SUM していたのと、まったく同じことを、1セルでやる。

右の表を見てほしい。SUMPRODUCT も、作業列に =C*D を書いて SUM した方も、どちらも240,000円だ。
答えは同じ。違うのは、SUMPRODUCT は列を一本も増やしていないこと。
そして、この「掛けて足す」は売上に限った話ではない。
「重み×点数」で加重平均を出すときも、「面積×単価」で見積もりを積むときも、構造はまったく同じだ。
掛けてから足す、が出てきたら、まず SUMPRODUCT を思い出せばいい。
ここまでは、正直まだ「便利な時短」でしかない。
この関数が化けるのは、次の章からだ。
種明かし。なぜ「条件」が書けるのか
SUMPRODUCT が条件つき集計に化ける理由は、Excelのちょっとした性質にある。
セルに =(A4="東日本") と書くと、Excelは TRUE か FALSE を返す。
ここまでは知っている人も多いと思う。問題はこの先だ。
この TRUE / FALSE を計算に混ぜると、自動で 1 と 0 に化ける。
TRUE×1 は 1、FALSE×1 は 0。Excelがそう決めている。
だから、条件に1を掛けると「当たったら1、外れたら0」の列ができる。
その 1 か 0 を、金額に掛けたらどうなるか。
当たった行の金額はそのまま残り、外れた行の金額は 0×金額=0 で消える。
残った金額だけを足せば、それは「条件に当たった行の合計」だ。
言葉だと回りくどいので、実際に列を並べて見せる。

C列が =(地域="東日本") の結果。TRUE と FALSE が並んでいる。
D列はそれに ×1 しただけ。ちゃんと 1 と 0 になっている。
E列は =(地域="東日本")×金額。東日本の行だけ金額が残り、それ以外は0円だ。
このE列を上から足すと126,000円。これが東日本の売上合計になる。
そして、この一連の流れをまるごと1式にしたのが、いちばん下のこれだ。
=SUMPRODUCT((地域="東日本")*金額)
答えは同じ126,000円。E列を作らずに、頭の中の「当たった行だけ残して足す」を1セルでやっている。
×1 は仕組みを見せるために置いただけで、金額に直接掛けるなら省いていい。
ちなみに、人が書いた SUMPRODUCT を見ると、--(地域="東日本") のようにマイナスが2つ並んでいることがある。
これも ×1 と同じで、TRUE/FALSE を 1/0 に変えるための昔ながらの書き方だ。
マイナスを2回かけると符号が元に戻る。負の負は正だから、TRUE が1、FALSE が0になる。
×1 でも -- でも結果は同じ。人の式を読めるようにだけしておけば、書くときはどちらでもいい。
この「条件を書くと1/0になって、掛けると効く」という感覚さえ掴めば、あとは応用するだけだ。
条件を重ねる。掛け算が「AND」になる
条件を2つ以上にしたいときは、条件どうしを掛け算(*)でつなぐ。
これがそのまま「AND(かつ)」になる。
理由はさっきと同じで、両方とも当たった行だけ 1×1=1 が残り、片方でも外れると 1×0=0 で消えるからだ。
「東日本の、商品Aだけ」の売上ならこう書く。
=SUMPRODUCT((地域="東日本")*(商品="A")*金額)
条件のカッコを掛けて、最後に金額を掛ける。それだけだ。

東日本かつ商品Aは54,000円。西日本かつ商品Bは60,000円。
条件は掛け算でいくつでも重ねられる。3つでも4つでも、* でつなぐだけ。
「同じことは SUMIFS でもできる」と思った人は鋭い。実際その通りだ。
単純なAND集計なら、SUMIFS の方が読みやすいことも多い。
ただ、SUMPRODUCT の強みは、この掛け算の考え方が、この先のOR条件・カウント・クロス集計まで一直線につながっていることにある。
道具をひとつ覚えれば、そこから全部が地続きになる。SUMIFS ではここまで伸びない。
現場でこの形が効く場面は、思い出すときりがない。
「渋谷店の、7月だけ」の売上。「担当が田中で、カテゴリが備品」の合計。
条件が2つ3つと重なるほど、オートフィルタと電卓の出番が増えて、そのぶん数字がずれていく。
その全部を、条件を * でつないだ1式に置き換えられる。手作業が減れば、事故も減る。
ひとつ注意。文字の条件は完全一致で判定される。
前後に空白が混じっていたり、全角と半角がゆれていたりすると、Excelは別物として扱う。
条件で集計する前に、名寄せで表記をそろえておくのが安全だ。
「AまたはB」と「件数を数える」
次はOR条件。「AまたはC」のように、どちらかに当たれば拾いたいとき。
このときは、条件どうしを足し算(+)でつなぐ。
=SUMPRODUCT(((商品="A")+(商品="C"))*金額)
カッコの中で条件を足すと、どちらかが当たった行が1になる。それを金額に掛けて足す。
件数を数えたいときは、金額の代わりに ×1 を掛ければいい。
金額を足す代わりに「1」を足していくので、当たった行の数がそのまま出る。

商品AまたはCの売上は148,000円。数量が40以上の件数は4件。
さらに「東日本で、数量が40以上」のように、不等号と別列の条件を混ぜたカウントも一発だ。
=SUMPRODUCT((地域="東日本")*(数量>=40))
これで2件。COUNTIFS でも書けるが、条件が増えるほど SUMPRODUCT の方が素直に書けることが多い。
ひとつだけ落とし穴がある。OR条件を + で作るとき、同じ行が両方の条件を満たすと、そこが 1+1=2 になる。
金額を足すぶんには倍にならないよう気をつける必要があるし、件数だと二重に数えてしまう。
だからORでつなぐ条件は、商品AとC のように互いに重ならない値で使うのが基本だ。
OR条件が活きるのは、たとえば「電話またはメールで来た問い合わせ」の件数。
複数の拠点をまとめて「本店または支店A」で合算するときも同じだ。
別々に SUMIF を書いて、あとで足し合わせる。あの二度手間をやらずに済む。
クロス集計を、たった1つの式で
ここが SUMPRODUCT のいちばん気持ちいいところだと思う。
行に地域、列に商品を並べた集計表。あの「交点を全部埋める」やつを、1つの式のコピーだけで作れる。
交点のマスに入れる式はこうだ。
=SUMPRODUCT((地域列=行の見出し)*(商品列=列の見出し)*金額列)
行の見出しと列の見出しを掛けて、金額に掛ける。AND条件そのものだ。
コツは、見出しのセルを絶対参照にしておくこと。
行見出しは列を固定して $G4、列見出しは行を固定して H$3。
こうすれば、左上のマスに書いた1式を、表全体にコピーするだけで全交点が埋まる。

東日本のAは54,000、西日本のBは60,000。右端が地域計、下が商品計。
そして右下の総合計は240,000円。冒頭の売上合計とぴったり一致する。
この「総計が元の合計と合う」というのは、ただの結果ではなく検算になる。
どこかのマスの条件を書き間違えていれば、総計がずれて気づける。
ピボットテーブルでも同じ表は作れる。ただ、ピボットは元データを更新したら「更新」を押す必要がある。
SUMPRODUCT で組んだクロス表は数式だから、明細を直した瞬間に勝手に追従する。
貼って渡す資料や、毎月使い回すテンプレートには、この「勝手に追従する」が効く。
月×商品カテゴリ、担当者×ステータス、店舗×曜日。
見たい切り口が「行と列」で表せるなら、この形がそのまま使える。
見出しのセルを差し替えれば、別の切り口の表も、式のコピーだけで作れる。
加重平均。「数の多い方に引っぱられた平均」
最後は加重平均。名前は難しそうだが、やっていることは掛けて足して、割るだけだ。
=SUMPRODUCT(値, 重み)/SUM(重み)
値に重みを掛けて足し、最後に重みの合計で割る。これで「重みを効かせた平均」が出る。
なぜこれが要るのか。単純な平均だと、実態からずれることがあるからだ。

左を見てほしい。単価をただ平均すると875円になる。
でも実際には、安い商品がたくさん売れている。販売数で重みをつけた平均単価は750円だ。
「1個あたりいくらで売れたのか」を知りたいなら、正しいのは加重の750円のほうだ。
右は成績の例。小テスト20%、中間30%、期末50%という配点で、点数はそれぞれ80・70・90点。
単純平均なら80.0点。でも配点50%の期末が90点だから、加重平均は82.0点になる。
通知表の評定に近いのは、当然この82.0点のほうだ。
ひとつだけ、絶対に忘れてはいけないことがある。最後の /SUM(重み) だ。
これを忘れると、ただ「掛けて足しただけの大きな数」が出てしまう。平均にならない。
割るところまでがワンセット、と覚えておけばいい。
使いどころは、思ったより広い。
アンケートの5段階評価を、回答人数で重みづけした平均満足度。
同じ商品を違う値段で仕入れたときの、平均仕入単価。
「数が多い方に引っぱられた、実態に近い平均」が欲しいときは、だいたいこれで足りる。
もう一歩。知っていると効く小技
掛けて足す、という土台が分かると、そこから少し伸ばせる。
ひとつは、掛ける範囲は2つに限らないこと。
=SUMPRODUCT(数量, 単価, 為替レート)
このように3つ以上の範囲を、同じ位置で掛けて足すこともできる。
数量×単価×為替、のような「三段掛け」の合計が、やはり1セルで出る。
もうひとつ。条件は文字だけでなく、日付や数値の範囲でも書ける。
(日付>=期間の始まり)*(日付<=期間の終わり)
この形を条件に挟めば、期間で絞った集計になる。
始まりと終わりを別のセルに置いておけば、そのセルを変えるだけで対象の期間が切り替わる。
ここまで来ると、SUMPRODUCT は「集計の下書き用紙」のようになってくる。
やりたいことを、条件の掛け算と足し算で書き下す。たいてい、それで1式に収まる。
つまずきやすい所を、先につぶしておく
便利な関数ほど、静かにハマる所がある。先に言っておく。
まず、掛け合わせる範囲は行数をそろえること。
C4:C11 と D4:D10 のように長さが違うと、うまく計算されなかったりエラーになる。始まりと終わりの行を必ず合わせる。
次に、さっきも触れたが、文字の条件は完全一致だ。
見た目が同じでも、全角空白や余分なスペースが混じっていれば別物になる。集計の前に整えておく。
そして、列全体を巻き込みすぎないこと。
A:A のように列まるごとを何本も掛けると、何十万行ぶんを毎回計算することになって重くなる。
必要な範囲だけを指すか、テーブル化して範囲を自動で伸ばすのが行儀がいい。
もうひとつ、掛け合わせる範囲に文字や空白が混じっていると #VALUE! になることがある。
金額の列に「-」や「未定」といった文字が入っていると、掛け算でつまずくのだ。
集計に使う列は数値だけにそろえておく。空欄は0にしておくと安全だ。
最後に、SUMIFS との使い分けについて。
単純なAND集計だけなら、SUMIFS の方が読みやすいことも多い。無理に SUMPRODUCT で書く必要はない。
SUMPRODUCT を選ぶのは、OR条件・複雑なカウント・クロス集計・加重平均のように、SUMIFS では素直に書けない場面だ。
道具は使い分ければいい。ただ、その引き出しを持っているかどうかで、詰まる場面の数がまるで変わる。
おわりに──「掛けて足す」がひとつ言えれば十分
長く書いてきたが、この記事で言いたかったことは、実はひとつしかない。
「掛けて足す」は、SUMPRODUCT で1セルにできる。
条件つきも、ORも、カウントも、クロスも、加重平均も、全部その延長線上にある。
TRUE/FALSE が 1/0 になって、掛けると効く。この感覚さえ掴めば、あとは組み合わせるだけだ。
私はこれを知ってから、「金額」という名前の作業列を作らなくなった。
表がひとつぶんスッキリして、条件が増えても慌てなくなった。
今日の売上表から、まずは作業列を一本、消してみてほしい。
最後に、この記事で使った表をそのまま配っている。
掛けて足す基本・AND条件・OR条件とカウント・クロス集計・加重平均 の式が全部入った練習ブックだ。
数字を自分のデータに差し替えれば、そのまま自分の集計に使える。
下のLINEに登録して、「掛け算」 とひとこと送ってほしい。ダウンロードリンクを自動でお返しする。

Excel・関数・自動化の「これ手作業でやってた……」を減らすネタを、LINEでも配っている。
気が向いたら、覗いてみてほしい。
