Excel(エクセル)の表で、特定の条件に合う数値だけを合計したい時は、どの関数を利用しますか?
特定の条件の数値を合計するときは、「SUMIF関数」を利用すると大変便利です。
エクセルで膨大なデータを取り扱う人にとっては、大きな武器となるExcel定番関数の一つです。
今回は、「SUMIF関数の使い方と手順」、「SUMIF関数のパターン別の使い方」を紹介します。
それ以外にも、エラーが発生する原因や複数条件での利用方法など、SUMIF関数に関するテクニックを幅広く紹介します。
SUMIF関数とは
エクセルのSUMIF関数は、サム・イフと読みます。
SUM関数が合計する関数なので、その関数に「IF(もし)」という条件を設定出来る機能が加わった関数ということです。
例えば、下の表から「A製品」の数量だけを合計したい、といった場合に利用します。
SUMIF関数を使うことで、F列の中から「A製品」の数量を合計することができます。
上の例では、「A製品」という文字と完全一致する項目だけを集計しました。
それ以外にも「北という文字から始まる」ものを集計する、といった部分一致による集計。
「2月1日以降」のものを集計する、といった範囲指定による集計もSUMIF関数で可能です。
SUMIF関数の条件設定
・完全一致
・部分一致
・範囲
基本的に、SUMIF関数で設定出来る条件は1つだけです。
SUMIF関数を複数条件で使う応用の使い方を後半に紹介しますが、2つ以上の条件を設定したい場合は、SUMIFS関数を利用した方が便利です。
SUMIFS関数の使い方は以下の記事を参考にしてください。
SUMIF関数の構文と引数
SUMIF関数の構文と引数を紹介します。
引数とは、関数が使用する上で必要な設定項目のことです。関数名の後の「()」内に入力します。
構文(書式)
SUMIF関数の構文は、「範囲」「検索条件」「合計範囲」の3つの引数で構成されています。
=SUMIF(範囲,検索条件,[合計範囲])
引数
SUMIF関数では、「範囲」「検索条件」「合計範囲」の3つの引数を指定します。
具体的には、以下のように構文を完成させる必要があります。
=SUMIF(C3:C12,"A製品",F3:F12)
第1引数「範囲」:検索の対象とするセル範囲を指定します。(例:C3:C12)
第2引数「検索条件」:セルを検索するための条件を数値や文字列で指定します。文字や範囲を指定する場合はダブルクォーテーション「”」で囲みます。(例:5、C4、”A製品”、”*リスト”、”=>1000”、”<500”、”<>土” など)
第3引数「合計範囲」:合計したい値が入力されているセル範囲を指定します。(例:F3:F12)
比較演算子(記号)
SUMIF関数の検索条件で『以上』『以下』『より上』『未満』などの条件を設定する際は、比較演算子を利用します。
『以上』『より上』『以下』『未満』『以外』などの条件をつけて合計するには、『>=』『>』『<=』『<』『<>』を引数の指定の際に使用します。記号は半角で使用します。
番号 | 記号 | 意味 | 使用例 |
1 | >= | 以上 | ”=>100” |
2 | > | より上 | ”>100” |
3 | <= | 以下 | ”<=100” |
4 | < | 未満 | ”<100” |
5 | <> | 以外 | ”<>0” |
SUMIF関数の使い方と手順を紹介
それでは実際にSUMIF関数を使ってみましょう。
以下の表から「A製品」の「数量」をSUMIF関数で挿入する手順を5つのステップに分けて解説します。
第1ステップ:SUMIF関数を挿入
集計結果を表示したいセルに、『=SUMIF(』と入力します。
=SUMIF(
第2ステップ:第1引数(範囲)を指定
続いて、第1引数「範囲」を指定します。
製品が入力されているC3からC8までの範囲をドラッグして、検索条件を探す範囲を指定します。
指定したあとは、「,」(カンマ)を入力して第1引数を区切ってください。
=SUMIF(C3:C8,
第3ステップ:第2引数(検索条件)を指定する
続いて、2つ目の引数「検索条件」を指定します。
今回は「A製品」という文字が入力された数量を集計したいので、「A製品」と入力されたE11セルをクリックします。
=SUMIF(C3:C8,E11,
指定したあとは、「,」(カンマ)を入力して第1引数を区切ってください。
セルを指定せずに、ダブルクォーテーションを使って、「=SUMIF(C3:C8,”A製品”,」と入力してもいいです。
第4ステップ:第3引数(合計範囲)を指定する
3つ目の引数「合計範囲」を指定します。
数量が入力されているF3からF8までの範囲をドラッグして、集計する範囲を指定します。
=SUMIF(C3:C8,E11,F3:F8)
第5ステップ:確定する
「Enter」キーを押して関数を確定させてください。
そうすると表の中に「A製品」の合計数量は「55」であることが分かりました。
SUMIF関数を使った実例(検索条件パターン別)
SUMIF関数の使い方の一番のポイントは2つ目の引数「検索条件」です。
検索条件は、「完全一致」「部分一致」「範囲指定」の3つの設定パターンがあります。
それぞれのパターン別のSUMIF関数を使った実例を紹介します。
検索条件:完全一致
「C製品」の売上数量を合計するSUMIF関数の使い方を紹介します。
下のSUMIF関数を挿入することで合計することが出来ます。
=SUMIF(C3:C8,"C製品",F3:F8)
引数「検索条件」は、表内の「C製品」と入力されているC7セルを指定することも出来ます。
=SUMIF(C3:C8,C7,F3:F8)
検索条件:部分一致
2つ目は検索条件を「部分一致」で利用する方法です。
「部分一致」とは、例えば、「Aから始まる文字」「Aで終わる文字」「Aを含む文字」といった検索条件のことをいいます。
このような検索条件を設定する時は、ワイルドカード文字という特殊文字を利用します。
このワイルドカードは、「*」(アスタリスク)”や”「?」(疑問符)です。
ワイルドカード文字 | 説明 |
*(アスタリスク) | 0文字以上の任意の文字列 |
?(疑問符) | 任意の1文字 |
商品コードが「DE」から始まる売上数量を合計する場合は、以下のSUMIF関数を挿入します。
下のSUMIF関数を挿入することで合計することが出来ます。
=SUMIF(B3:B8,"DE*",F3:F8)
商品コードに「A」を含む場合は以下のように設定します。
=SUMIF(B3:B8,"*A*",F3:F8)
ワイルドカードの使い方は、以下の記事でも詳しく紹介しています。
「?」の使い方など、合わせて参考にしてみてください。
検索条件:範囲指定
3つ目は検索条件を「範囲指定」で利用する方法です。
例えば、「2月1日以前」や「2月15日以降」といった条件を設定できます。
検索条件の入力方法は、以下の表を参考にしてください。
条件 | 直接入力 (日付) | 直接入力 (数値) | セル指定 |
〇〇以上 | ">=yyyy/mm/dd" | ">=30" | ">="&E11 |
〇〇より大きい | ">yyyy/mm/dd" | ">30" | ">"&E11 |
〇〇未満 | "<yyyy/mm/dd" | "<30" | “<"&E11 |
〇〇以下 | "<=yyyy/mm/dd" | "<=30" | “<="&E11 |
〇〇と等しい | "=yyyy/mm/dd“ or "yyyy/mm/dd“ | "=30“ or "30“ | “=”&E11 or E11 |
〇〇以外 | "<>yyyy/mm/dd“ | "<>30“ | "<>"&E11 |
今日以降 | “>="&TODAY() | - | - |
今日以前 | "<="&TODAY() | - | - |
ただし、「2月1日から2月15日まで」といった範囲を上限と下限ともに絞るような条件設定は出来ません。
その場合は、SUMIFS関数を使用して複数条件で合計する必要があります。
売上日が「3月1日以降」の販売数量を合計したい場合は、SUMIF関数を以下のように設定します。
=SUMIF(E3:E8,">=2023/3/1",F3:F8)
検索条件をセル番号を指定して設定することも可能です。
=SUMIF(E3:E8,">="&E6,F3:F8)
SUMIF関数の合計が「0」やエラー「VALUE!」が発生する原因
SUMIF関数の構文はシンプルですが、合計値が「0」になったり、エラーが発生する場合があります。
そんな時、ぜひチェックしてほしい3つの項目をご紹介します。
原因1:数値が文字列になってる
合計値が「0」となる場合は、数値の入ったセルが『文字列』になっている可能性があります。
例えば、下の表に「C製品」の売上を合計するために、以下のSUMIF関数を挿入していますが、結果は「0」です。
=SUMIF(C3:C8,"C製品",F3:F8)
確認するために、数値が入ったセルを右クリックして、右クリックメニューの「セルの書式設定」を押すと、「文字列」になっていることが分かります。
この場合は、セルの書式設定を「文字列」から「標準」に変更する必要があります。
変更方法が分からない方は、以下の記事で詳しく紹介していますので、参考にしてみてください。
原因2:比較演算子やワイルドカードが全角になっている
「>」「=<」などの比較演算子や、「*」「?」のワイルドカードが全角になっていると、値が「0」になります。
数式バーで数式を再確認して、全角が混ざっていないか再確認し、半角に変更しましょう。
全角が含まれていると、以下のようにSUMIF関数の合計は「0」となります。
=SUMIF(B3:B8,"DE*",F3:F8)
原因3:別のExcelブックを参照している
SUMIF関数を使って、別のExcelブックの表を合計することも出来ます。
しかし、SUMIF関数で別のExcelブックの合計を利用するのはお勧めしません。
というのも、2つのExcelファイルを共に開いた状態にしていないと、エラー「VALUE!」が発生してしまうからです。
どういうことか図解で説明します。
まず、SUMIF関数を使って、別のExcelファイルの表の値を合計します。
=SUMIF([元表.xlsx]使い方!$C$3:$C$8,"C製品",[元表.xlsx]使い方!$F$3:$F$8)
この2つのExcelファイルを一度上書き保存してから閉じて、再度SUMIF関数を挿入したExcelファイルを開きます。
そうすると、SUMIF関数の結果が「VALUE!」と表示されてしまいます。
元表のExcelを開くことで、このエラーは解消します。
しかし、元表のExcelファイルを削除したり、ファイルの保存場所を変更するとエラーを解消することは出来ません。
SUMIF関数の検索条件と合計範囲を自動で変更する方法
下の表のように、「A製品」「B製品」「C製品」の5月売上数量の合計を、赤枠のセルに表示したい場合があります。
この場合、3つのSUMIF関数を赤枠のセルに挿入する必要がありますが、SUMIF関数の検索条件と合計範囲を、セルごとに設定していると手間がかかります。
こんな時には、OFFSET関数とMATCH関数を組み合わせて、以下のSUMIF関数を挿入します。
=SUMIF($B$3:$B$8,I2,OFFSET($B$3:$B$8,,MATCH($H$3,$C$2:$F$2,0)))
上のSUMIF関数をI3、J3、K3セルのどのセルに挿入しても、検索条件に合う数値を合計することが出来ます。
OFFSET関数は、基準のセルから指定された行数と列数だけシフトした位置にあるセル範囲の参照を返す関数です。構文は「=OFFSET(基準, 行数, 列数)」で作成します。
MATCH関数(マッチ関数)は、指定した検索範囲内で、数値や文字列などの検索値(検査値)が、どの位置にあるかを数値(〇〇列目、▲▲行目)で返す関数です。構文は、「=MATCH(検査値,検査範囲,[照合の型])」で作成します。
SUMIF関数で複数の条件で合計する方法
SUMIF関数で複数条件を指定することも可能です。
OR(または)条件とAND(かつ)条件で2通りの使い方に分けられます。
OR条件で合計する
まずは、「A製品」もしくは「B製品」の販売数量を合計する、といった場合は、OR条件でSUMIF関数を利用します。
今回は、下の表から「A製品」もしくは「B製品」の販売数量を合計する方法を紹介します。
この場合は、一つのセルにSUMIF関数を2つ挿入し、「A製品」と「B製品」の合計をそれぞれ加算します。
=SUMIF(C3:C8,"A製品",F3:F8)+SUMIF(C3:C8,"B製品",F3:F8)
AND条件で合計する
続いて、「A製品」でかつ「南区」で販売された数量を合計する、といった場合は、AND条件でSUMIF関数を利用します。
今回は、下の表から「A製品」でかつ「南区」の販売数量を合計する方法を紹介します。
仮に、SUMIF関数で「A製品」を合計しても「南区」以外の数量も混ざってしまいます。
同様に、SUMIF関数で「南区」を合計しても「A製品」以外の数量が混ざってしまいます。
このような場合は、「表にそれぞれの条件を結合したSUMIF関数用のキー列を挿入する」ことで実現が可能です。
それでは実際に手順を紹介します。
手順1.キー列を追加
「販売区域」列の右側に新規に1列を追加し、「分類」列と「販売区域」列の文字を「&」演算子で結合します。
=B3&C3
手順2.キー列を完成
手順1で作成した数式を、下のセルにもコピペして、検索条件用の「キー列」を完成させます。
手順3.SUMIF関数を挿入
「キー列」を検索条件に利用して、以下のSUMIF関数を挿入します。
=SUMIF(D3:D8,"A製品南区",F3:F8)
そうすると、キー列が「A製品南区」のものだけが合計されるので、結果として「A製品」でかつ「南区」のものが合計されたことになります。
引数「検索条件」をセル番号を指定して利用することも可能です。
その場合も「検索条件」を「&」演算子で文字を結合し、以下のようにSUMIF関数を挿入します。
=SUMIF(D3:D8,D11&E11,F3:F8)
SUMIF関数の「範囲」「合計範囲」を複数行で利用
SUMIF関数の引数「範囲」と引数「合計範囲」は1行でしか使えない、というわけでありません。
下の構文や図のように、2行の「範囲」と2行の「合計範囲」でSUMIF関数を利用することも可能です。
=SUMIF(B3:C7,"A",D3:E7)
ただし、引数「範囲」と引数「合計範囲」の行数と列数は必ず同じである必要があります。
エクセルが自動で範囲と合計範囲の相対位置を読みにいっているので、互いの選択範囲の形が異なっていると、想定した値が表示されません。
SUMIF関数の使い方のポイントは「検索条件」
今回は条件で数値を合計することが出来るSUMIF関数の使い方を紹介しました。使い方のポイントは2つ目の引数「検索条件」の設定方法です。
セル番号を指定する場合と、関数の中に直接条件を設定する場合の2パターンがありますので、使いやすい方法を利用しましょう。
3つの引数「範囲」「検索条件」「範囲」の順番も覚えづらいかもしれませんが、慣れれば自然と使いこなせます。