Excel(エクセル)SUMIF関数の使い方|同じ条件の値を検索して合計
使用関数:SUMIF
SUMIFとは?
SUMIF(サムイフ)はフィルターとVLOOKUPをちょこっと取りしてSUMと組み合わせたような便利関数です。
SUMは総計・和を意味し、IFの論理式と連動させて合理的に値の加算を行います。条件の指定にワイルドカードも使え、利用場面が多い関数です。
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の範囲指定はVLOOKUPに比べれば柔軟と言えます。列方向でも行方向でも指定でき、検索範囲を左端列に置く必要もありませんが、守るべきルールはあります。
「範囲」と「合計範囲」を相対させ、行の数(または列の数)を同じにします。異なった行(列)数範囲を指定すると、正常な結果が得られません。
SUMIFで等号・不等号を使って以上・以下(含む)・未満などのデータを合計する
SUMIFの条件は比較演算子(等号・不等号)を組み込んで「~以上」「~以下」「~未満」という指定ができます。比較演算子(等号・不等号)で指定する時は文字列と同様にダブルクォーテーション「”」で括る必要があります。
表の年齢から「30歳以上(30歳を含む)」を抽出して、SUMIFでその数値を合計してみます。
結果を表示させるセルを選択して、「数式」タブ「「最近使った関数」→「SUMIF」でダイアログボックスを開きます。
最初の引数「範囲」に「年齢」のセル範囲をドラッグで指定します。
次の引数「検索条件」には「30歳以上」を等号・不等号で「>=30」と入力します。Tabキーを押すと自動でダブルクォーテーションのくくりが入ります。
最後の引数「合計範囲」に「来店数」のセル範囲をドラッグで指定します。
「30歳以上の来店数」が合計されました。
計算式はこうなります。 → =SUMIF(B2:B11,“>=30”,C2:C11)
「以上・以下・未満」などを示す等号・不等号(比較演算子)の表記一覧
- = イコール。等しい。一致する
【表記例】=30 - <> 異なる。一致しない
【表記例】<>30 - > 大きい。一致を含まない
【表記例】 >30 - < 小さい。未満。一致を含まない
【表記例】 <30 - >= 以上。一致を含む
【表記例】 >=30 - <= 以下。一致を含む
【表記例】 <=30
空欄以外を条件にする
空白でないセル、空白以外のセルに対応する数値をSUMIFで足し算する場合の「検索条件」の指定は「“<>“」です。
「<>」は「異なる・一致しない」という比較演算子ですが、単独だと「空欄以外」を指定したことになります。
下図の表では会員資格のセル範囲を引数「範囲」に指定、「検索条件」を「”<>“」として会員資格のある顧客だけの「購入金額」をSUMIFで合計しています。
ワイルドカードで「~を含む」など部分一致の文字列を条件にする
SUMIF関数で「~を含む」「~で始まる」「~で終わる」など曖昧な条件を指定するにはワイルドカードまたは、正規表現を使います。
最も使用頻度の高い「*(アスタリスク)」は任意の文字列を表すワイルドカード文字です。
下図の表では商品名のセル範囲を引数「範囲」に指定、「検索条件」を「”*デスク*”」とし、前方一致でも後方一致でも抽出できるように指定、全てのデスクの「金額」をSUMIFで合計しています。
- 「~を含む」→ ”*デスク*“
- 「~で始まる」→ ”デスク*“
- 「~で終わる」→ ”*デスク”
文字列を直接入力せず、セル参照で指定する場合は「“*”&D2&”*”」と入力します。アスタリスクをダブルクォーテーションで囲み、参照セル番地と「&(アンパサンド)」でつなげて指定します。
SUMIFの使い方
SUMIFで売上を項目別に集計する
日々の売上のデータベースから、月別、担当者別、商品別にSUMIFを使って集計します。
月別の集計
日付のセル範囲から、MONTH関数であらかじめ月の数字を取り出しています。
4月の集計セルをクリック、SUMIF関数の引数ダイアログボックスで以下のように指定します。
5月~7月までオートフィルコピーするので、範囲、合計範囲のセル範囲は絶対参照にしてあります。
SUMIFで月別の集計ができました。
担当者別の集計
担当者別の集計では「範囲」に「担当者」のセル範囲を指定しています。「範囲」「合計範囲」は絶対参照。
SUMIFで担当者別の集計ができました。
計算式: =SUMIF($C$2:$C$15,G8,$E$2:$E$15)
商品別の集計
商品別の集計では「範囲」に「商品」のセル範囲を指定しています。「範囲」「合計範囲」は絶対参照。
SUMIFで商品別の集計ができました。
計算式: =SUMIF($D$2:$D$15,G13,$E$2:$E$15)
SUMIFで「範囲」「合計範囲」の複数列を指定する
SUMIFの引数「範囲」と「合計範囲」は相対させる必要があります。相対させるとは具体的にどのようなことか、複数列の範囲指定で分かりやすく解説します。
SUMIFで複数列を指定をするのは、商品カテゴリーと金額のフィールドが交互に並ぶ下図の表のような例です。
この中から、同色の商品を検索して売上を合算してみましょう。
最初の引数「範囲」の指定は「A2:E10」。条件を検索するセル範囲を、間の売上列までひっくるめて指定します。
最後の引数「合計範囲」の指定は「B2:F10」。合計する値の入ったセル範囲を、間の列までひっくるめて指定します。
指定した「範囲」と「合計範囲」は共に5列で、相対位置にあるのが分かりますね?
「範囲」の1列目で検索した値を「合計範囲」の1列目から抜き出し、「範囲」の3列目で検索した値を「合計範囲」の3列目から抜き出します。5列目も同様。
これらを合計した値が返されるということです。
「検索条件」にはワイルドカードを使った文字列「*赤*」をセル参照で「B13」と指定。
関数の引数ダイアログボックスはこう↓なります。他の色の集計セルにオートフィルコピーするので、「範囲」「合計範囲」共に絶対参照にしておきます。
数式: =SUMIF(($A$2:$E$10,B13,$B$2:$F$10)
色別のオフィス用品の売上総額が表示されました。
SUMIFとIF関数を組み合わせて月末の行に月の合計値を表示
日々の売上表で月の最終行に「月の合計」を表示させます。IF関数にSUMIFを入れ子して数式を組み立てます。
まず、SUMIFで月別の合計値を出す計算式を組み立てましょう。
B列の「月」にはMONTH関数で月の数字を取り出してあり、ここをSUMIFの「範囲」に指定します。「検索条件」には「月」の最初のセル番地を指定、「合計範囲」には「金額」のセル範囲を指定します。
「範囲」と「合計範囲」はF4キーで絶対参照にしておきましょう。
数式: =SUMIF($B$2:$B$15,B2,$E$2:$E$15)
「月の合計」の最初のセルを選択し、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))
月の最終行に、月別の合計値が表示されました。
- SUMIF関数は条件に一致した値を合計する
- 条件の指定にはワイルドカードが使える
- 引数「範囲」と「合計範囲」は相対させる
- 「範囲」と「合計範囲」は行(列)数を揃える