エクセルで売上データや在庫リストを管理していると、「特定のカテゴリだけ合計したい」「条件に合う数字だけを足し算したい」という場面に必ずと言っていいほど出会います。
そのたびに手作業でフィルターをかけて電卓で計算していては、時間がいくらあっても足りません。
そこで活躍するのが、エクセルのSUMIF関数・SUMIFS関数です。
条件を指定するだけで、膨大なデータの中から該当する行だけを自動で拾い上げて合計してくれる、非常に便利な関数です。
本記事では、SUMIF関数の基本的な使い方から、複数条件での集計、さらには複数シートをまたいだ条件合計まで、実務で使える知識を丁寧に解説していきます。
エクセル初心者の方でも理解できるよう、具体的なサンプルデータとイメージ図を交えながら順を追って説明しますので、ぜひ最後までお付き合いください。
この記事でわかること
・SUMIF関数の基本構文と引数の意味
・文字列・数値・ワイルドカードを使った条件指定の方法
・SUMIFS関数による複数条件(AND条件)での集計
・複数シートをまたいだ条件付き合計の対処法
・よくあるエラーの原因と解決策
・日付・期間を条件にした応用的な集計テクニック
エクセルでSUMIF関数を使った条件付き合計の基本【結論:1関数で即解決】
エクセルで「特定の条件に合うデータだけを合計したい」という場面は、業務でも家計管理でも非常によく登場します。
そのような場合に活躍するのが、SUMIF関数(サムイフ)です。
SUMIF関数を使えば、膨大なデータの中から条件に一致する行だけを自動で拾い上げ、合計値を計算してくれます。
手作業でフィルターをかけて足し算する必要がなくなり、作業効率が大幅に向上するでしょう。
SUMIF関数の基本構文
=SUMIF(範囲, 検索条件, 合計範囲)
・範囲 :条件を判定するセルの範囲
・検索条件 :合計する条件(文字列・数値・セル参照など)
・合計範囲 :合計したい数値が入っているセル範囲
まずは今回の解説で使用するサンプルデータをご確認ください。
| A | B | C | D |
|---|---|---|---|
| 商品名 | カテゴリ | 販売数量 | 売上金額 |
| 桜餅 | 和菓子 | 120 | 36000 |
| 柏餅 | 和菓子 | 95 | 28500 |
| マシュマロ | 洋菓子 | 200 | 40000 |
| チョコ | 洋菓子 | 180 | 54000 |
| アボカド | 青果 | 75 | 22500 |
| カボチャ | 青果 | 60 | 18000 |
| マグロ | 鮮魚 | 40 | 80000 |
| カツオ | 鮮魚 | 35 | 52500 |
このサンプルでは、A列に商品名、B列にカテゴリ、C列に販売数量、D列に売上金額が入力されています。
1行目がヘッダー行となっており、データは2行目から9行目に格納されています。
このデータを元に、SUMIF関数の使い方を順を追って解説していきます。
SUMIF関数の引数を1つずつ丁寧に理解する
SUMIF関数は3つの引数で構成されています。
第1引数の「範囲」は、条件と照らし合わせるデータが入っているセル範囲です。
上記サンプルでカテゴリ別の合計を出したい場合は、B2:B9を指定することになります。
第2引数の「検索条件」には、合計したい対象を絞り込む条件を入力します。
文字列の場合はダブルクォーテーションで囲む必要があり、たとえば“和菓子”のように記述します。
第3引数の「合計範囲」は、実際に足し算したい数値が入っている列を指定します。
売上金額を合計したければD2:D9、販売数量を合計したければC2:C9となります。
文字列条件でSUMIFを使う実例
たとえばカテゴリが「和菓子」の売上金額合計を求める場合、数式は以下のようになります。
=SUMIF(B2:B9,”和菓子”,D2:D9)
この数式をF2セルに入力すると、桜餅(36000)と柏餅(28500)の合計である64500が返ってきます。
条件を直接数式に書く方法のほかに、条件をセルに入力してセル参照する方法も便利です。
たとえばF1セルに「和菓子」と入力しておき、数式を=SUMIF(B2:B9,F1,D2:D9)とすることで、F1の内容を変えるだけで集計対象を切り替えられます。
以下はF2セルに数式を入力した図です。
| A | B | C | D | E | F | |
| 1 | 商品名 | カテゴリ | 販売数量 | 売上金額 | 和菓子合計 | |
| 2 | 桜餅 | 和菓子 | 120 | 36000 | =SUMIF(B2:B9,”和菓子”,D2:D9) → 64500 | |
| 3 | 柏餅 | 和菓子 | 95 | 28500 | ||
| 4 | マシュマロ | 洋菓子 | 200 | 40000 |
【操作のポイント】条件文字列は必ず半角ダブルクォーテーション(” ”)で囲むこと。セル参照を使う場合はクォーテーション不要。絶対参照($B$2:$B$9)にするとオートフィル時にズレを防げます。
SUMIF関数で数値条件・比較演算子を使った集計方法
SUMIF関数は文字列だけでなく、数値の大小を条件にした集計にも対応しています。
たとえば「売上金額が40000以上の商品の販売数量を合計したい」といったケースです。
この場合、比較演算子をダブルクォーテーションで囲んで指定します。
比較演算子を使った条件指定の書き方
・”>=40000″ → 40000以上
・”>40000″ → 40000より大きい
・”<40000″ → 40000未満
・”<=40000″ → 40000以下
・”<>40000″ → 40000以外
数値条件でSUMIFを使う実例
売上金額(D列)が40000以上の行について、販売数量(C列)の合計を求める数式は以下のとおりです。
=SUMIF(D2:D9,”>=40000″,C2:C9)
この数式では、D列の値が40000以上に該当するマシュマロ・チョコ・マグロ・カツオの販売数量(200+180+40+35)が合計され、455という結果が返ります。
条件の数値部分をセル参照と組み合わせる場合は、“>=”&C1のように文字列結合演算子(&)を使って記述する点に注意が必要です。
ワイルドカードを使った部分一致条件
SUMIF関数では、ワイルドカード文字を使った部分一致条件も指定できます。
アスタリスク(*)は「任意の文字列」を意味し、クエスチョンマーク(?)は「任意の1文字」を表します。
たとえば商品名に「マ」が含まれるものの売上合計を出したい場合は、条件を“*マ*”と指定します。
=SUMIF(A2:A9,”*マ*”,D2:D9)
→ マシュマロ(40000)+マグロ(80000)= 120000
「マ」から始まる商品のみに絞りたい場合は“マ*”、「マ」で終わる場合は“*マ”と書き換えます。
業務データで商品コードの一部が共通しているケースや、担当者名の一部しか分からないケースなど、応用の幅は非常に広いと言えます。
【操作のポイント】比較演算子を含む条件は必ず文字列として”>=100″のように記述。セル参照と組み合わせる場合は “>=”&A1 と & で連結するのを忘れずに。
SUMIFS関数で複数条件に対応した集計をする方法
SUMIFは条件が1つの場合に使いますが、複数の条件を組み合わせて合計したいときはSUMIFS関数(サムイフス)を使います。
「和菓子カテゴリかつ販売数量が100以上の売上合計」のような、AND条件での集計が可能です。
SUMIFS関数の基本構文
=SUMIFS(合計範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, …)
※SUMIFと引数の順番が異なり、合計範囲が最初に来る点に注意
SUMIFS関数を使った複数条件集計の実例
カテゴリが「和菓子」かつ販売数量が100以上の売上金額合計を求める場合は、以下のように記述します。
=SUMIFS(D2:D9,B2:B9,”和菓子”,C2:C9,”>=100″)
→ 桜餅(36000)のみ該当 = 36000
柏餅は和菓子ですが販売数量が95で100未満のため除外され、桜餅の36000だけが合計されます。
SUMIFS関数では条件を127個まで追加できるため、複雑な絞り込み集計にも十分対応可能です。
| A | B | C | D | F(結果) | |
| 1 | 商品名 | カテゴリ | 販売数量 | 売上金額 | 和菓子×100以上 |
| 2 | 桜餅 | 和菓子 | 120 | 36000 | 36000 |
| 3 | 柏餅 | 和菓子 | 95 ✕ | 28500 | |
| 4 | マシュマロ | 洋菓子 ✕ | 200 | 40000 |
OR条件で集計したい場合の対処法
SUMIFSはAND条件専用のため、OR条件(「和菓子または洋菓子」など)を直接指定することはできません。
OR条件で合計したい場合は、それぞれのSUMIFの結果を足し算する方法が最もシンプルです。
=SUMIF(B2:B9,”和菓子”,D2:D9)+SUMIF(B2:B9,”洋菓子”,D2:D9)
→ 64500 + 94000 = 158500
条件の数が多い場合は、SUMPRODUCT関数とISTEXT・MATCH関数を組み合わせる発展的な方法もありますが、まずはSUMIFを足し合わせる方法で対応するのが現実的でしょう。
【操作のポイント】SUMIFSはSUMIFと引数の順番が異なる点に要注意。合計範囲が先頭に来るのが最大の違い。条件範囲と条件のペアは必ず1対1で対応させること。
エクセルで複数シートをまたいだ条件合計をする方法
業務では月別や支店別にシートが分かれているケースも多く、複数シートにまたがる条件付き合計を求める場面があります。
残念ながらSUMIF関数は複数シートをそのままの形では串刺し集計できません。
そのため、いくつかの代替手段を活用する必要があります。
INDIRECT関数とSUMIFを組み合わせる方法
シート名の一覧をセルに用意しておき、INDIRECT関数でシート参照を動的に生成する方法があります。
たとえばE1からE3セルに「1月」「2月」「3月」というシート名が入力されている場合、以下のような配列数式で各シートのSUMIF結果を合計できます。
=SUMPRODUCT(SUMIF(INDIRECT(E1:E3&”!B2:B9″),”和菓子”,INDIRECT(E1:E3&”!D2:D9″)))
この数式はSUMPRODUCT関数の中でINDIRECTとSUMIFを配列として処理させる構造になっています。
各シートの構成(列の並び順)が統一されていることが前提となる点に注意が必要です。
各シートに小計行を設けて集約シートでSUMIFを使う方法
実務でよく採用されるシンプルな方法として、各シートに条件別の小計行を設けておき、集約シートでその小計をSUMIFやSUMで合算するアプローチがあります。
この方法はメンテナンス性が高く、数式が複雑になりすぎないという利点があります。
シートが増えても集約シートに1行追加するだけで対応できるため、実務運用に向いた構成と言えます。
Power QueryやピボットテーブルとSUMIFの使い分け
複数シートをまたぐ集計の場合、Power QueryやピボットテーブルはSUMIFよりも強力な手段となることがあります。
Power Queryではシートを結合してフラット化し、単一テーブルにしてからSUMIF的な集計を行う流れが一般的です。
一方、SUMIFはリアルタイムで値が更新され数式が軽量という強みがあるため、データ量が少なく更新頻度が高い業務ではSUMIFが引き続き優位と言えます。
【操作のポイント】複数シートのSUMIFはINDIRECT+SUMPRODUCTの組み合わせが有効。ただしシート名に空白や特殊文字が含まれる場合は「’シート名’!」のようにシングルクォートで囲む記述が必要。
SUMIF関数でよくあるエラーと対処法
SUMIF関数を使っていると、思わぬエラーや意図しない結果に遭遇することがあります。
代表的なトラブルとその原因・対処法を把握しておくことで、スムーズに作業を進めることができます。
結果が0になってしまう原因と対処
条件は正しいはずなのに結果が0になるケースの多くは、データ型の不一致が原因です。
たとえば数値として見えているセルが実は文字列として格納されている場合、SUMIF関数は数値条件で一致していないと判断します。
対処法としては、該当列を選択して「データ」タブの「区切り位置」を適用するか、VALUE関数で数値に変換する方法が有効です。
また、条件に指定した文字列と実際のデータの間に余分なスペースや改行が含まれている場合も0になる原因となります。
TRIM関数で前後の空白を除去してからSUMIFの対象にすると解決できることが多いです。
範囲とSUMIFのサイズが合っていないときのエラー
SUMIF関数では、「範囲」と「合計範囲」のサイズ(行数・列数)が一致していないと、意図しない結果やエラーが発生することがあります。
特にオートフィルで数式をコピーした際に参照範囲がズレて不一致になるケースが多く見られます。
これを防ぐには、範囲を絶対参照($マーク)で固定しておくことが基本の対策です。
| パターン | 数式例 | オートフィル後 | 判定 |
| 相対参照 | =SUMIF(B2:B9,E2,D2:D9) | =SUMIF(B3:B10,E3,D3:D10) | ✕ 範囲がズレる |
| 絶対参照 | =SUMIF($B$2:$B$9,E2,$D$2:$D$9) | =SUMIF($B$2:$B$9,E3,$D$2:$D$9) | 〇 範囲が固定される |
#VALUE!エラーが出る場合の対処
SUMIF関数で#VALUE!エラーが出る場合は、合計範囲に数値以外のデータ(文字列など)が含まれているケースが考えられます。
また、INDIRECT関数と組み合わせた場合にシート名が正しく解釈されていないことも原因になります。
数式バーで参照先を確認し、ISNUMBER関数で数値判定をしながら問題のあるセルを特定するのが早道です。
【操作のポイント】結果が0になる場合はまずデータ型(文字列か数値か)を確認。セルの左上に緑の三角マークが出ていれば文字列数字の可能性大。F2キーでセル編集モードにしてEnterを押すだけで数値に変換できることもあります。
SUMIFの応用テクニック:日付・期間を条件にした集計
売上データや勤怠データでは、日付を条件にした期間集計が求められる場面も多くあります。
SUMIFやSUMIFSを使えば、特定の日付範囲に絞った合計を簡単に算出できます。
特定日以降・以前のデータを合計する
日付条件もSUMIF関数で扱えます。
たとえばA列に日付、D列に売上金額が入っている場合、2024年4月1日以降のデータのみ合計するには以下のように記述します。
=SUMIF(A2:A9,”>=”&DATE(2024,4,1),D2:D9)
DATE関数を使って日付を数値として正確に指定することで、文字列として入力した日付との不一致を防ぐことができます。
セルに日付を入力しておく場合は“>=”&A1のようにセル参照と連結する書き方になります。
期間(開始日〜終了日)で絞り込む方法
特定の期間内のデータのみ集計するには、SUMIFSで2つの日付条件を組み合わせます。
=SUMIFS(D2:D9,A2:A9,”>=”&DATE(2024,4,1),A2:A9,”<=”&DATE(2024,6,30))
→ 2024年4月1日〜6月30日(第1四半期)の売上合計
月初・月末をEOMONTH関数で動的に取得する方法も実務では便利です。
たとえばEOMONTH(TODAY(),-1)+1で当月初日、EOMONTH(TODAY(),0)で当月末日を取得できます。
SUMPRODUCT関数で柔軟な集計をする発展的な方法
SUMPRODUCT関数はSUMIFの上位互換としても活用でき、より柔軟な条件集計が可能です。
配列演算を活用することで、OR条件や計算式を条件にした集計も1つの数式で実現できます。
=SUMPRODUCT((B2:B9=”和菓子”)*(C2:C9>=100)*D2:D9)
→ カテゴリが和菓子かつ販売数量100以上の売上合計
SUMIFSと同じ結果が得られますが、SUMPRODUCT関数はExcelのバージョンを問わず安定して動作するという利点があります。
【操作のポイント】日付条件は必ずDATE関数かセル参照で指定し、文字列として日付を直打ちするのは避けること。SUMPRODUCT関数はTRUE/FALSEを1/0として演算するため、条件部分を乗算(*)でつなぐと自然なAND条件になります。
まとめ:エクセルのSUMIF・条件合計・複数シート対応・足し算を使いこなそう
今回はエクセルで条件付きの合計・集計をするための主要な方法を解説しました。
まず基本となるSUMIF関数は、1つの条件に合うデータだけを合計するための関数で、文字列・数値・ワイルドカードなど幅広い条件指定に対応しています。
複数の条件をANDで組み合わせたい場合はSUMIFS関数が活躍し、日付期間での絞り込みにも対応可能です。
複数シートをまたいだ条件合計については、INDIRECT関数とSUMPRODUCTを組み合わせる方法が有効ですが、シート構成を統一しておくことが前提となります。
エラーが発生した際はデータ型や参照範囲のズレを真っ先に確認しましょう。
さらに発展的な集計にはSUMPRODUCT関数やPower Queryも選択肢に入れることで、より柔軟で強力な集計業務を実現できます。
SUMIF・SUMIFS・条件合計・複数シート対応の足し算をしっかりマスターして、日々のエクセル業務をさらに効率化してみてください。