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-sumif | SUMIF]] | [[2022-02-24-excel-function-howto-use-sumifs | SUMIFS]] | [[2022-03-13-excel-function-howto-use-sumproduct | SUMPRODUCT]] |
|---|---|---|---|---|---|---|
| 条件の数 | 1つだけ | 複数(最大127組) | 複数(実質無制限) | |||
| AND条件(かつ) | — | 対応 | 対応 | |||
| OR条件(または) | — | 非対応 | 対応 | |||
| ワイルドカード(*、?) | 対応 | 対応 | 非対応 | |||
| 日付範囲指定 | 対応 | 対応 | 対応 | |||
| 計算式を条件に使う | 非対応 | 非対応 | 対応 | |||
| 対応バージョン | Excel 2003以降 | Excel 2007以降 | Excel 2003以降 | |||
| 読み方 | サムイフ | サムイフエス | サムプロダクト |
選択フローチャート
どの関数を使うか迷ったら、次の順番で判断してみてください。
- 条件は1つだけ? → SUMIF を使う
- 条件が2つ以上で、すべて「かつ」? → SUMIFS を使う
- 「または」が含まれる? → SUMPRODUCT を使う
- 計算結果を条件にしたい? → 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 | 営業部 | プランA | 50000 |
| 2024/4/3 | 総務部 | プランB | 30000 |
| 2024/4/5 | 営業部 | プランA | 80000 |
| 2024/4/10 | 総務部 | プランC | 45000 |
| 2024/5/2 | 営業部 | プランB | 60000 |
| 2024/5/8 | 総務部 | プランA | 35000 |
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 / SUMIFS | SUMPRODUCT非対応 |
| 計算結果を条件にする | 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列(数量) |
|---|---|---|
| 営業部 | 1000 | 50 |
| 総務部 | 2000 | 30 |
| 営業部 | 1500 | 20 |
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-trim | TRIM関数]]でスペース除去 |
| 結果が0になる | 全角・半角の不一致 | ASC関数/JIS関数で統一 | |
| 結果が0になる | 数値が文字列として保存されている | [[2022-07-26-excel-function-howto-use-value | VALUE関数]]で変換 |
| #VALUE!エラー | 範囲のサイズ(行数)が不一致 | すべての範囲を同じ行数に揃える | |
| #VALUE!エラー | 検索条件が255文字を超えている | 条件を短くするかセル参照に変更 | |
| 期待値と合わない | SUMIFSの引数順を間違えている | 合計範囲が最初の引数か確認 |
引数の順番ミスに注意
SUMIFは「範囲→条件→合計範囲」、SUMIFSは「合計範囲→条件範囲→条件」です。SUMIF関数に慣れた方がSUMIFSを使い始めるとき、合計範囲の位置を間違えやすいので気をつけてください。
まとめ
SUMIF・SUMIFS・SUMPRODUCTの使い分けをおさらいしましょう。
- SUMIF: 条件1つのシンプルな集計に最適
- SUMIFS: 複数条件のAND集計(「かつ」)に最適
- SUMPRODUCT: OR条件(「または」)や計算式を条件にする高度な集計に最適
迷ったときの判断基準は次の3ステップです。
- 条件が1つ → SUMIF
- 条件が2つ以上で「かつ」 → SUMIFS
- 「または」が含まれる → 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エラー値一覧]]
