SUMIF・SUMIFS・SUMPRODUCTの使い分け|条件付き集計を完全攻略

スポンサーリンク

SUMIF・SUMIFS・SUMPRODUCTの使い分け|条件付き集計を完全攻略

「SUMIF・SUMIFS・SUMPRODUCTのどれを使えばいいの?」。そんな悩み、ありませんか?

3つの関数は似ているようで、得意な場面がそれぞれ違います。間違った関数を選ぶと、数式がムダに複雑になります。

この記事では4つの観点で3関数を比較します。選び方フローチャートも用意したので、もう迷いませんよ。

SUMIF・SUMIFS・SUMPRODUCTの違い【結論】

まず結論です。3つの関数は「条件の複雑さ」で使い分けます。

  • SUMIF: 条件が1つだけのシンプルな集計
  • SUMIFS: 条件が2つ以上のAND条件(「かつ」)の集計
  • SUMPRODUCT: OR条件(「または」)や計算式を含む高度な集計

条件が1つならSUMIF、2つ以上の「かつ」ならSUMIFSです。「または」が必要ならSUMPRODUCTを使います。

3関数の機能比較一覧表

比較項目[[2022-02-21-excel-function-howto-use-sumifSUMIF]][[2022-02-24-excel-function-howto-use-sumifsSUMIFS]][[2022-03-13-excel-function-howto-use-sumproductSUMPRODUCT]]
条件の数1つだけ複数(最大127組)複数(実質無制限)
AND条件(かつ)対応対応
OR条件(または)非対応対応
ワイルドカード(*、?)対応対応非対応
日付範囲指定対応対応対応
計算式を条件に使う非対応非対応対応
対応バージョンExcel 2003以降Excel 2007以降Excel 2003以降
読み方サムイフサムイフエスサムプロダクト

選択フローチャート

どの関数を使うか迷ったら、次の順番で判断してみてください。

  1. 条件は1つだけ?SUMIF を使う
  2. 条件が2つ以上で、すべて「かつ」?SUMIFS を使う
  3. 「または」が含まれる?SUMPRODUCT を使う
  4. 計算結果を条件にしたい?SUMPRODUCT を使う

迷ったらSUMIFSから試そう

SUMIFS関数は条件1つでも使えます。「条件が増えるかもしれない」場面では、最初からSUMIFSを使っておくと後から条件を追加しやすいですよ。

SUMIF関数の特徴と基本の使い方

[[2022-02-21-excel-function-howto-use-sumif|SUMIF関数]]は、条件を1つ指定して合計する関数です。

基本構文

=SUMIF(範囲, 検索条件, [合計範囲])
引数必須/任意説明
範囲必須条件を検索するセル範囲
検索条件必須合計対象を絞り込む条件
合計範囲任意実際に合計するセル範囲(省略時は「範囲」を合計)

使用例

次の売上データで「りんご」の合計を求めます。

A列(商品名)B列(金額)
りんご100
みかん200
りんご150
=SUMIF(A2:A4,"りんご",B2:B4)

結果は 100 + 150 = 250 です。

得意な場面・苦手な場面

得意苦手
条件1つの合計複数条件の組み合わせ
ワイルドカードで部分一致OR条件(「または」)
比較演算子(>=、<>)計算式を条件にする

条件が2つ以上になったら[[2022-02-24-excel-function-howto-use-sumifs|SUMIFS関数]]に切り替えましょう。

SUMIFS関数の特徴と基本の使い方

[[2022-02-24-excel-function-howto-use-sumifs|SUMIFS関数]]は、複数の条件をすべて満たすデータだけを合計する関数です。

基本構文

=SUMIFS(合計対象範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], ...)
引数必須/任意説明
合計対象範囲必須合計したい数値の範囲
条件範囲1必須1つ目の条件を判定する範囲
条件1必須1つ目の条件
条件範囲2, 条件2任意2つ目以降の条件ペア(最大127組)

引数の順番に注意

SUMIFは「範囲→条件→合計範囲」、SUMIFSは「合計範囲→条件範囲→条件」の順です。合計範囲の位置が逆なのでつまずきやすいポイントです。

使用例

次の売上データで「営業部の、4月の売上合計」を求めます。

A列(日付)B列(部署)C列(金額)
2024/4/1営業部50000
2024/4/3総務部30000
2024/4/5営業部80000
2024/5/2営業部60000
=SUMIFS(C2:C5, B2:B5, "営業部", A2:A5, ">="&DATE(2024,4,1), A2:A5, "<"&DATE(2024,5,1))

B列が「営業部」かつA列が4月の行だけを合計します。結果は 50000 + 80000 = 130,000 です。

得意な場面・苦手な場面

得意苦手
複数条件のAND合計OR条件(「または」)
ワイルドカードで部分一致計算式を条件にする
日付範囲指定配列の掛け算

「営業部または総務部」のように、OR条件が必要な場合はSUMPRODUCT関数の出番です。

SUMPRODUCT関数の特徴と基本の使い方

[[2022-03-13-excel-function-howto-use-sumproduct|SUMPRODUCT関数]]は、配列の掛け算と合計を1つの数式で処理する関数です。条件式を組み込めば条件付き集計もできます。

基本構文

=SUMPRODUCT(配列1, [配列2], [配列3], ...)
引数必須/任意説明
配列1必須計算対象の配列またはセル範囲
配列2, …任意掛け合わせる追加の配列(最大255個)

条件付き集計のときは、条件式を (条件)* の形で掛け算に含めます。条件に合わない行は0になり、自動的に除外されます。

使用例

先ほどと同じデータで「営業部の売上合計」を求めます。

=SUMPRODUCT((B2:B5="営業部")*C2:C5)

(B2:B5="営業部") が各行でTRUE(1) / FALSE(0)を返します。FALSEの行は0倍されて自動的に除外されます。

得意な場面・苦手な場面

得意苦手
OR条件(「または」)ワイルドカード(*、?)
計算式を条件にする部分一致検索
配列の掛け算+合計SUMIFSより数式が長い

ワイルドカードを使いたい場合は、SUMIF/SUMIFSのほうが手軽に書けます。

条件付き集計の4つの観点で徹底比較

ここからは、実務でよく使う4つのシーンごとに、3関数の具体的な数式を比較します。

次のサンプルデータを使います。

A列(日付)B列(部署)C列(商品)D列(金額)
2024/4/1営業部プランA50000
2024/4/3総務部プランB30000
2024/4/5営業部プランA80000
2024/4/10総務部プランC45000
2024/5/2営業部プランB60000
2024/5/8総務部プランA35000

1. 条件の数による使い分け

条件1つ: 「営業部」の合計

=SUMIF(B2:B7,"営業部",D2:D7)
=SUMIFS(D2:D7,B2:B7,"営業部")
=SUMPRODUCT((B2:B7="営業部")*D2:D7)

3つとも結果は同じ 190,000 です。条件が1つならSUMIFが一番シンプルですね。

条件2つ: 「営業部」かつ「プランA」の合計

=SUMIFS(D2:D7,B2:B7,"営業部",C2:C7,"プランA")
=SUMPRODUCT((B2:B7="営業部")*(C2:C7="プランA")*D2:D7)

結果は 130,000 です。SUMIF関数は条件が1つだけなので使えません。SUMIFSなら条件ペアを並べるだけです。

2. OR条件への対応

「営業部」または「総務部」の合計(この例では全部署が対象になりますが、3部署以上あるケースを想定してください)

SUMIFSには「または」を直接指定する方法がありません。対処法は2つあります。

方法1: SUMIFS関数を足し算する

=SUMIFS(D2:D7,B2:B7,"営業部")+SUMIFS(D2:D7,B2:B7,"総務部")

条件が2つ程度ならこの書き方でも問題ありません。ただし3つ以上になると数式が長くなります。

方法2: SUMPRODUCT関数を使う

=SUMPRODUCT(((B2:B7="営業部")+(B2:B7="総務部"))*D2:D7)

+ でOR条件をつなげるだけです。条件が増えても数式の構造は変わりません。

SUMPRODUCTのOR条件の仕組み

(条件1)+(条件2) は、どちらかがTRUE(1)なら合計が1以上になります。これを集計範囲と掛けることで、いずれかの条件に一致する行が集計対象になります。ただしSUMPRODUCTのOR条件では、両方の条件に一致する行が二重カウントされる可能性があります。重複を防ぐには ((条件1)+(条件2)>0) と書くのが安全です。

AND + OR の組み合わせ: 「(営業部または総務部)かつプランA」の合計

=SUMPRODUCT(((B2:B7="営業部")+(B2:B7="総務部"))*(C2:C7="プランA")*D2:D7)

このような複合条件はSUMIFSだけでは書けません。SUMPRODUCT関数の出番です。

3. 日付範囲の指定

2024年4月1日から4月30日までの合計

3関数とも日付範囲の指定に対応しています。

=SUMIFS(D2:D7,A2:A7,">="&DATE(2024,4,1),A2:A7,"<"&DATE(2024,5,1))
=SUMPRODUCT((A2:A7>=DATE(2024,4,1))*(A2:A7<DATE(2024,5,1))*D2:D7)

SUMIF関数で日付範囲を指定する場合は、2つのSUMIFの引き算になります。

=SUMIF(A2:A7,"<"&DATE(2024,5,1),D2:D7)-SUMIF(A2:A7,"<"&DATE(2024,4,1),D2:D7)

日付範囲指定はSUMIFSが一番シンプル

日付範囲の指定では、SUMIFSが「以上」「未満」を条件ペアとして書けるので最も読みやすいです。日付の計算方法について詳しく知りたい方は、[[2022-05-28-excel-function-howto-use-date|DATE関数の使い方]]も参考にしてみてください。

4. ワイルドカードの使い方

「プラン」で始まる商品の合計

=SUMIF(C2:C7,"プラン*",D2:D7)
=SUMIFS(D2:D7,C2:C7,"プラン*")

結果は 300,000(全行が該当)です。

SUMPRODUCT関数ではワイルドカードが使えません。代わりにFIND関数やSEARCH関数を組み合わせます。

=SUMPRODUCT(ISNUMBER(FIND("プラン",C2:C7))*D2:D7)

ワイルドカードを使った部分一致の集計は、SUMIF/SUMIFSのほうが圧倒的にシンプルですね。

4観点の比較まとめ表

シーンおすすめ関数理由
条件1つSUMIF引数が少なくシンプル
複数条件(AND)SUMIFS条件ペアを並べるだけ
OR条件(または)SUMPRODUCT+ で条件をつなげるだけ
AND + OR の複合条件SUMPRODUCT*+ で自由に組める
日付範囲SUMIFS以上・未満の条件ペアで読みやすい
ワイルドカード(部分一致)SUMIF / SUMIFSSUMPRODUCT非対応
計算結果を条件にするSUMPRODUCT配列で計算式が使える

SUMIFSからSUMPRODUCTに条件付き集計を乗り換えるタイミング

SUMIFSで集計していたけど、要件が変わって対応できなくなった。そんなときがSUMPRODUCTの出番です。

OR条件が必要になったとき

典型的な移行シナリオです。

Before(SUMIFSの足し算):

=SUMIFS(D2:D7,B2:B7,"営業部",C2:C7,"プランA")
+SUMIFS(D2:D7,B2:B7,"営業部",C2:C7,"プランB")
+SUMIFS(D2:D7,B2:B7,"営業部",C2:C7,"プランC")

プランが3つなので3行になっています。プランが増えるたびに行が増えて管理が大変です。

After(SUMPRODUCTに乗り換え):

=SUMPRODUCT((B2:B7="営業部")*((C2:C7="プランA")+(C2:C7="プランB")+(C2:C7="プランC"))*D2:D7)

1つの数式にまとまりました。AND条件(営業部)は *、OR条件(プランA/B/C)は + でつなぎます。

乗り換えの目安

OR条件が2つ以下ならSUMIFSの足し算でも管理できます。3つ以上になったらSUMPRODUCTに切り替えるのがおすすめです。

複数列の掛け算と条件付き集計を同時にしたいとき

「単価 x 数量」の合計を条件付きで出したい場面です。

B列(部署)C列(単価)D列(数量)
営業部100050
総務部200030
営業部150020

SUMIFS関数の場合: 作業列が必要

E2セル: =C2*D2(作業列で単価x数量を計算)
集計: =SUMIFS(E2:E4,B2:B4,"営業部")

SUMPRODUCT関数の場合: 作業列なし

=SUMPRODUCT((B2:B4="営業部")*C2:C4*D2:D4)

作業列を使わずに1つの数式で完結できるのがSUMPRODUCTの強みです。

よくあるエラーと対処法

3関数で共通して起きやすいエラーをまとめました。

症状原因対処法
結果が0になる条件の文字列に余分なスペース[[2022-08-03-excel-function-howto-use-trimTRIM関数]]でスペース除去
結果が0になる全角・半角の不一致ASC関数/JIS関数で統一
結果が0になる数値が文字列として保存されている[[2022-07-26-excel-function-howto-use-valueVALUE関数]]で変換
#VALUE!エラー範囲のサイズ(行数)が不一致すべての範囲を同じ行数に揃える
#VALUE!エラー検索条件が255文字を超えている条件を短くするかセル参照に変更
期待値と合わないSUMIFSの引数順を間違えている合計範囲が最初の引数か確認

引数の順番ミスに注意

SUMIFは「範囲→条件→合計範囲」、SUMIFSは「合計範囲→条件範囲→条件」です。SUMIF関数に慣れた方がSUMIFSを使い始めるとき、合計範囲の位置を間違えやすいので気をつけてください。

まとめ

SUMIF・SUMIFS・SUMPRODUCTの使い分けをおさらいしましょう。

  • SUMIF: 条件1つのシンプルな集計に最適
  • SUMIFS: 複数条件のAND集計(「かつ」)に最適
  • SUMPRODUCT: OR条件(「または」)や計算式を条件にする高度な集計に最適

迷ったときの判断基準は次の3ステップです。

  1. 条件が1つ → SUMIF
  2. 条件が2つ以上で「かつ」 → SUMIFS
  3. 「または」が含まれる → SUMPRODUCT

まずは[[2022-02-21-excel-function-howto-use-sumif|SUMIF関数]]から始めましょう。条件が増えたら[[2022-02-24-excel-function-howto-use-sumifs|SUMIFS関数]]へ切り替えます。OR条件が出てきたら[[2022-03-13-excel-function-howto-use-sumproduct|SUMPRODUCT関数]]の出番です。


この記事で紹介した関数・関連記事

  • [[2026-03-17-excel-count-functions-comparison|COUNT系5関数の違いと使い分け早見表]]
  • [[2022-02-21-excel-function-howto-use-sumif|SUMIF関数の使い方]]
  • [[2022-02-24-excel-function-howto-use-sumifs|SUMIFS関数の使い方]]
  • [[2022-03-13-excel-function-howto-use-sumproduct|SUMPRODUCT関数の使い方]]
  • [[2022-02-06-excel-function-howto-use-sum|SUM関数の使い方]]
  • [[2022-01-16-excel-function-howto-use-if|IF関数の使い方]]
  • [[2022-04-26-excel-function-howto-use-countif|COUNTIF関数の使い方]]
  • [[2022-04-27-excel-function-howto-use-countifs|COUNTIFS関数の使い方]]
  • [[2022-03-26-excel-function-howto-use-averageif|AVERAGEIF関数の使い方]]
  • [[2022-03-26-excel-function-howto-use-averageifs|AVERAGEIFS関数の使い方]]
  • [[2022-03-16-excel-function-howto-use-countblank|COUNTBLANK関数の使い方]]
  • [[2022-08-03-excel-function-howto-use-trim|TRIM関数の使い方]]
  • [[2022-07-26-excel-function-howto-use-value|VALUE関数の使い方]]
  • [[2022-05-28-excel-function-howto-use-date|DATE関数の使い方]]
  • [[2022-02-06-excel-function|Excel関数の基本]]
  • [[2022-02-19-excel-function-list-by-function|Excel関数一覧]]
  • [[2022-04-10-excel-error-value-list|Excelエラー値一覧]]
タイトルとURLをコピーしました