SUMIF関数の使い方|同じ条件の値を検索して合計

Excel(エクセル)SUMIF関数の使い方|同じ条件の値を検索して合計

Excel(エクセル)SUMIF関数の使い方|同じ条件の値を検索して合計

使用関数:SUMIF

SUMIFとは?

SUMIF(サムイフ)はフィルターとVLOOKUPをちょこっと取りしてSUMと組み合わせたような便利関数です。
SUMは総計・和を意味し、IFの論理式と連動させて合理的に値の加算を行います。条件の指定にワイルドカードも使え、利用場面が多い関数です。
SUMIFの基本的な使い方と応用、SUMIFの条件をワイルドカード(部分一致)や比較演算子(以上・以下・未満・空欄以外)などで指定するコツ、範囲と合計範囲を複数列で指定するルールなどを初心者にも分かりやすく図解します。

SUMIFの引数「範囲」「検索条件」「合計範囲」の指定

SUMIF関数は「数式」タブ→「関数ライブラリ」→「数学/三角」に格納されています。「数学/三角」のメニューを下までスクロールして出てきます。
「関数ライブラリ」→「数学/三角」→SUMIF

SUMIF関数の引数ダイアログボックスを開いてみましょう。
SUMIFの引数は「範囲」「検索条件」「合計範囲」の3つです。「合計範囲」を省略すると、「範囲」から値を抽出して合計します。

SUMIF関数の計算式 → =SUMIF(範囲,検索条件,[合計範囲])

指定した「範囲」内に「検索条件」と合致したセルがあれば、それに対応する行(または列)にある「合計範囲」内の数値を足し算します。
下の例で言えば、「A」という検索条件「A、B、C、A、B、C」の範囲内から探して、「5、6、7、8、9、10」の合計範囲内の「A」と同じ行の数値を加算するということです。
SUMIF関数の引数「範囲」「検索条件」「合計範囲」

SUMIFの第一引数「範囲」と第三引数「合計範囲」は行/列の数を合わせる

SUMIFの範囲指定はVLOOKUPに比べれば柔軟と言えます。列方向でも行方向でも指定でき、検索範囲を左端列に置く必要もありませんが、守るべきルールはあります。

「範囲」と「合計範囲」を相対させ、行の数(または列の数)を同じにします。異なった行(列)数範囲を指定すると、正常な結果が得られません。
SUMIFの第一引数「範囲」と第三引数「合計範囲」は行/列の数を合わせる

SUMIFで等号・不等号を使って以上・以下(含む)・未満などのデータを合計する

SUMIFの条件は比較演算子(等号・不等号)を組み込んで「~以上」「~以下」「~未満」という指定ができます。比較演算子(等号・不等号)で指定する時は文字列と同様にダブルクォーテーション「”」で括る必要があります。

表の年齢から「30歳以上(30歳を含む)」を抽出して、SUMIFでその数値を合計してみます。
表の年齢から「30歳以上(30歳を含む)」を抽出して、SUMIFで点数を合計
結果を表示させるセルを選択して、「数式」タブ「「最近使った関数」→「SUMIF」でダイアログボックスを開きます。
最初の引数「範囲」に「年齢」のセル範囲をドラッグで指定します。
「範囲」に「年齢」のセル範囲をドラッグで指定
次の引数「検索条件」には「30歳以上」を等号・不等号で「>=30」と入力します。Tabキーを押すと自動でダブルクォーテーションのくくりが入ります。
「検索条件」に「30歳以上」を等号・不等号で「">=30"」と入力
最後の引数「合計範囲」に「来店数」のセル範囲をドラッグで指定します。
「合計範囲」に「来店数」のセル範囲をドラッグで指定
「30歳以上の来店数」が合計されました。
SUMIFで「30歳以上の来店数」が合計された

計算式はこうなります。 → =SUMIF(B2:B11,“>=30”,C2:C11)

「以上・以下・未満」などを示す等号・不等号(比較演算子)の表記一覧

  • = イコール。等しい。一致する
    【表記例】=30
  • <> 異なる。一致しない
    【表記例】<>30
  • > 大きい。一致を含まない
    【表記例】 >30
  • < 小さい。未満。一致を含まない
    【表記例】 <30
  • >= 以上。一致を含む
    【表記例】 >=30
  • <= 以下。一致を含む
    【表記例】 <=30

空欄以外を条件にする

空白でないセル、空白以外のセルに対応する数値をSUMIFで足し算する場合の「検索条件」の指定は「“<>“です。
「<>」は「異なる・一致しない」という比較演算子ですが、単独だと「空欄以外」を指定したことになります。

下図の表では会員資格のセル範囲を引数「範囲」に指定、「検索条件」を「”<>“」として会員資格のある顧客だけの「購入金額」をSUMIFで合計しています。
「検索条件」を「"<>"」として会員資格のある顧客だけの「購入金額」をSUMIFで合計

ワイルドカードで「~を含む」など部分一致の文字列を条件にする

SUMIF関数で「~を含む」「~で始まる」「~で終わる」など曖昧な条件を指定するにはワイルドカードまたは、正規表現を使います。
最も使用頻度の高い「*(アスタリスク)」は任意の文字列を表すワイルドカード文字です。

下図の表では商品名のセル範囲を引数「範囲」に指定、「検索条件」を「”*デスク*”」とし、前方一致でも後方一致でも抽出できるように指定、全てのデスクの「金額」をSUMIFで合計しています。
ワイルドカードで「~を含む」検索条件を指定し、「金額」をSUMIFで合計

  • 「~を含む」→ ”*デスク*
  • 「~で始まる」→ ”デスク*
  • 「~で終わる」→ ”*デスク”

文字列を直接入力せず、セル参照で指定する場合は「“*”&D2&”*”」と入力します。アスタリスクをダブルクォーテーションで囲み、参照セル番地と「&(アンパサンド)」でつなげて指定します。
検索条件をワイルドカードを使ってセル参照で指定する

SUMIFの使い方

SUMIFで売上を項目別に集計する

日々の売上のデータベースから、月別、担当者別、商品別にSUMIFを使って集計します。
日々の売上のデータベースから、月別、担当者別、商品別にSUMIFを使って集計

月別の集計

日付のセル範囲から、MONTH関数であらかじめ月の数字を取り出しています。
日付のセル範囲から、MONTH関数で月を取り出す
4月の集計セルをクリック、SUMIF関数の引数ダイアログボックスで以下のように指定します。
5月~7月までオートフィルコピーするので、範囲、合計範囲のセル範囲は絶対参照にしてあります。
月別の集計でSUMIF関数の引数ダイアログボックスの指定
SUMIFで月別の集計ができました。
SUMIFで月別の集計

担当者別の集計

担当者別の集計では「範囲」に「担当者」のセル範囲を指定しています。「範囲」「合計範囲」は絶対参照。
担当者別の集計でSUMIF関数の引数ダイアログボックスの指定
SUMIFで担当者別の集計ができました。
SUMIFで担当者別の集計
計算式: =SUMIF($C$2:$C$15,G8,$E$2:$E$15)

商品別の集計

商品別の集計では「範囲」に「商品」のセル範囲を指定しています。「範囲」「合計範囲」は絶対参照。
商品別の集計でSUMIF関数の引数ダイアログボックスの指定
SUMIFで商品別の集計ができました。
SUMIFで商品別の集計
計算式: =SUMIF($D$2:$D$15,G13,$E$2:$E$15)

SUMIFで「範囲」「合計範囲」の複数列を指定する

SUMIFの引数「範囲」と「合計範囲」は相対させる必要があります。相対させるとは具体的にどのようなことか、複数列の範囲指定で分かりやすく解説します。
SUMIFで複数列を指定をするのは、商品カテゴリーと金額のフィールドが交互に並ぶ下図の表のような例です。
商品カテゴリーと金額のフィールドが交互に並ぶ表
この中から、同色の商品を検索して売上を合算してみましょう。
SUMIFで同じ色の商品を検索して売上を集計

最初の引数「範囲」の指定は「A2:E10」。条件を検索するセル範囲を、間の売上列までひっくるめて指定します。
引数「範囲」に条件を検索するセル範囲を、間の売上列までひっくるめて指定

最後の引数「合計範囲」の指定は「B2:F10」。合計する値の入ったセル範囲を、間の列までひっくるめて指定します。
引数「合計範囲」に合計する値の入ったセル範囲を、間の列までひっくるめて指定

指定した「範囲」と「合計範囲」は共に5列で、相対位置にあるのが分かりますね?
「範囲」の1列目で検索した値を「合計範囲」の1列目から抜き出し、「範囲」の3列目で検索した値を「合計範囲」の3列目から抜き出します。5列目も同様。
これらを合計した値が返されるということです。
「範囲」と「合計範囲」は相対位置にある

検索条件」にはワイルドカードを使った文字列「*赤*」をセル参照で「B13」と指定。

関数の引数ダイアログボックスはこう↓なります。他の色の集計セルにオートフィルコピーするので、「範囲」「合計範囲」共に絶対参照にしておきます。
複数列を指定したSUMIFの関数の引数ダイアログボックス
数式: =SUMIF(($A$2:$E$10,B13,$B$2:$F$10)

色別のオフィス用品の売上総額が表示されました。
色別のオフィス用品の売上総額表示

SUMIFとIF関数を組み合わせて月末の行に月の合計値を表示

日々の売上表で月の最終行に「月の合計」を表示させます。IF関数にSUMIFを入れ子して数式を組み立てます。
月の最終行に「月の合計」を表示させる売上表

まず、SUMIFで月別の合計値を出す計算式を組み立てましょう。
B列の「月」にはMONTH関数で月の数字を取り出してあり、ここをSUMIFの「範囲」に指定します。「検索条件」には「月」の最初のセル番地を指定、「合計範囲」には「金額」のセル範囲を指定します。
「範囲」と「合計範囲」はF4キーで絶対参照にしておきましょう。
月別の合計値を出すSUMIF関数の引数ダイアログボックス
数式: =SUMIF($B$2:$B$15,B2,$E$2:$E$15)

「月の合計」の最初のセルを選択し、IF関数のダイアログボックスを開き、以下のように指定します。
SUMIFとIFを組み合わせて月末に月の合計値を表示するIF関数のダイアログ

  • 「論理式」:B2=B3 「月」のセルの値が一つ下のセルと同じだったら=まだ月末でなければ
  • 「真の場合」:“”  空白を返す
  • 「偽の場合」:SUMIF($B$2:$B$15,B2,$E$2:$E$15) 月の売上をSUMIFで合計する

最終的な数式: =IF(B2=B3,“”,SUMIF($B$2:$B$15,B2,$E$2:$E$15))

月の最終行に、月別の合計値が表示されました。
IFとSUMIFの組み合わせで月の最終行に、月別の合計値が表示された

複数の条件を指定する時はSUMIFS関数を使う

まとめ
  • SUMIF関数は条件に一致した値を合計する
  • 条件の指定にはワイルドカードが使える
  • 引数「範囲」と「合計範囲」は相対させる
  • 「範囲」と「合計範囲」は行(列)数を揃える
タイトルとURLをコピーしました