概要
「条件付き積算」は、“条件を満たす行だけ”について「単価×数量」などの掛け算を行い、その合計を出す計算です。
Excel では、これを SUMPRODUCT 関数でとてもきれいに書けます。
イメージはこうです。
「条件を満たす行は 1、満たさない行は 0 に変換 → その 1/0 を掛け算に混ぜて、欲しい行だけ積算する」。
SUMPRODUCT の基本と「条件付き積算」の考え方
SUMPRODUCT の基本動作
SUMPRODUCT の書式は次のとおりです。
=SUMPRODUCT(配列1, [配列2], [配列3], …)
やっていることはシンプルで、
- 配列同士を「同じ位置」ごとに掛け算する
- その掛け算結果をすべて合計する
という動きです。
例えば、B2:B5 に単価、C2:C5 に数量が入っているとき、
=SUMPRODUCT(B2:B5, C2:C5)
は、内部的には
= B2*C2 + B3*C3 + B4*C4 + B5*C5
を 1 本の式でやっているのと同じです。
これが「積算(掛け算の合計)」の基本形です。
条件付き積算の基本パターン
条件を 1/0 に変えて掛け算に混ぜる
「条件付き」にするためのコアアイデアは、条件を TRUE/FALSE → 1/0 に変換して掛け算に混ぜることです。
例えば、A 列に「部門」、B 列に「単価」、C 列に「数量」があるとします。
「部門が“営業”の行だけ、単価×数量を合計したい」場合は、次のように書けます。
=SUMPRODUCT(--(A2:A100="営業"), B2:B100, C2:C100)
ここでの動きはこうです。
(A2:A100="営業")
→ 営業なら TRUE、それ以外は FALSE の配列ができる--(A2:A100="営業")
→ TRUE を 1、FALSE を 0 に変換(ダブルマイナスで数値化)- 1/0 × 単価 × 数量
→ 営業行:1×単価×数量 → そのまま
→ それ以外:0×単価×数量 → 0 になる - SUMPRODUCT が全部足す
→ 結果として「営業だけの単価×数量の合計」になる
これが「条件付き積算」の基本パターンです。
複数条件の条件付き積算
AND 条件(かつ)の場合
例えば、次のような表を考えます。
- A 列:部門
- B 列:月(”2025-09″ など)
- C 列:単価
- D 列:数量
「部門が“営業”かつ 月が“2025-09”の行だけ、単価×数量を積算したい」場合は、こう書きます。
=SUMPRODUCT(--(A2:A100="営業"), --(B2:B100="2025-09"), C2:C100, D2:D100)
動きは次の通りです。
(A2:A100="営業")→ 営業なら TRUE(B2:B100="2025-09")→ 2025-09 なら TRUE- それぞれ
--で 1/0 に変換 - 1/0 × 1/0 × 単価 × 数量
→ 両方の条件を満たす行だけが「1×1×単価×数量」として残る
→ どちらか一方でも条件を満たさない行は 0 になる - SUMPRODUCT がそれらを合計 → AND 条件付き積算
「AND 条件=掛け算で絞り込む」と覚えると、配列計算の感覚がつかみやすくなります。
条件付き積算のテンプレート集
1 条件での条件付き積算
部門が「営業」の行だけ、単価×数量を積算する例:
=SUMPRODUCT(--(A2:A100="営業"), B2:B100, C2:C100)
一般形で書くと:
=SUMPRODUCT(--(条件範囲=条件), 値1の範囲, 値2の範囲, …)
「条件を満たす行だけ、値1×値2×… を合計する」という形です。
複数条件(AND)の条件付き積算
部門が「営業」かつ 月が「2025-09」の行だけ、単価×数量を積算する例:
=SUMPRODUCT(--(A2:A100="営業"), --(B2:B100="2025-09"), C2:C100, D2:D100)
一般形で書くと:
=SUMPRODUCT(--(条件範囲1=条件1), --(条件範囲2=条件2), 値1の範囲, 値2の範囲, …)
条件が増えても、--(条件) を増やしていくだけです。
条件付き積算として使うときの注意点
配列のサイズを必ずそろえる
SUMPRODUCT に渡すすべての範囲(条件範囲・単価・数量など)は、行数・列数が同じである必要があります。
例えば、
=SUMPRODUCT(--(A2:A100="営業"), B2:B90, C2:C100)
のように長さが違うと、#VALUE! エラーや意図しない結果の原因になります。
条件範囲と値の範囲の対応関係
条件範囲と、掛け算する値の範囲は「同じ行が対応している」必要があります。
行がずれていると、「別の行の単価×数量」を拾ってしまうので、範囲指定は慎重にそろえましょう。
例題
問題1
A2:A10 に「部門」、B2:B10 に「単価」、C2:C10 に「数量」が入っています。
部門が「営業」の行だけについて、「単価×数量」を合計したいとき、SUMPRODUCT を使ってどのような式を書けばよいか答えてください。
(ヒント:--(A2:A10="営業") を掛け算に混ぜます)
問題2
A2:A100 に「部門」、B2:B100 に「月(”2025-09″ など)」、C2:C100 に「単価」、D2:D100 に「数量」が入っています。
部門が「営業」かつ 月が「2025-09」の行だけについて、「単価×数量」を合計する式を書いてください。
問題3
次の式は、どのような条件付き積算を行っているか、日本語で説明してください。
=SUMPRODUCT(--(A2:A50="A班"), --(B2:B50="2025-10"), C2:C50, D2:D50)
「どの列に何が入っていて、どんな条件を満たす行の、何と何を掛け算して合計しているのか」を説明してみてください。
問題4
B2:B20 に「単価」、C2:C20 に「数量」が入っています。
次の 2 つの式は、結果として同じ値になります。なぜ同じになるのか、SUMPRODUCT の動きを踏まえて説明してください。
=SUMPRODUCT(B2:B20, C2:C20)
=SUMPRODUCT(--(ROW(B2:B20)>=2), B2:B20, C2:C20)
(ヒント:--(ROW(B2:B20)>=2) は、実質的にどんな配列になっているでしょうか)
問題5
次の式が #VALUE! エラーになりました。原因を「条件付き積算」という観点から説明してください。
=SUMPRODUCT(--(A2:A100="営業"), B2:B80, C2:C100)
どの範囲の長さが合っていないか、そして SUMPRODUCT がなぜそれを許容できないのかを言葉で説明してみてください。
