Excel(エクセル)SUMIFS関数の使い方|複数の条件を検索して合計する
使用関数:SUMIF
SUMIFSとは?
SUMIFS(サムイフ・エスまたはサムイフズ)関数は複数の条件全てに合致する値を取り出して合計します。AND条件で検索して合計するということですね。
SUMIFとSUMIFSの違いは?
条件で検索した値を合計するのがSUMIF(サムイフ)。SUMIFS(サムイフ・エス)は複数の条件で検索した値を合計します。SUMIFSはSUMIFの拡張版。
SUMIFとSUMIFSの引数の順序は異なります。SUMIFの「合計範囲」は第3引数で省略可ですが、SUMIFSの引数の「合計対象範囲」は第1引数で省略不可です。ダイアログを使わず、数式を手入力する時に間違いやすいポイントなので注意しましょう。
SUMIFSの引数「合計対象範囲」「条件範囲・条件」の指定
SUMIFSは「数式」タブ「関数ライブラリ」の「数学/三角」に格納されています。一覧を下へスクロールして「SUMIFS」をクリックします。
最初の引数「合計対象範囲」は合計する数値が入ったセル範囲です。ここは唯一無二の指定で、以下の引数は全て、この範囲から値を取り出すための条件となります。
「条件範囲1」と「条件1」はセットで、以下「2」「3」…と続きます。表示されていない条件3以降の引数はスクロールバーを下へ動かして指定し、「合計対象範囲」から合算する値を絞り込んでいきます。
SUMIFS関数の計算式 → =SUMIFS(合計対象範囲,条件範囲1,条件1,条件範囲2,条件2)
「条件」で等号・不等号を使って以上・以下(含む)・未満の指定をする
SUMIFSで比較演算子(等号・不等号)を使って引数「条件」の指定をしてみましょう。
下の表からSUMIFSのAND条件で「30代の男性の来店数」を計算します。
「合計対象範囲」は「来店数」のセル範囲を指定します。
「条件範囲1」は「性別」のセル範囲を指定、「条件1」は「男」と入ったセル番地を指定します。
「30代」の指定は「30歳以上(30歳を含む)」と「40歳未満(40歳を含まない)」という2つの条件で行います。
「条件範囲2」は「年齢」のセル範囲を指定、「条件2」には「30歳以上(30歳を含む)」を等号・不等号で「">=30"」と指定します。
「条件範囲3」は「年齢」のセル範囲を指定、「条件3」には「40歳未満(40歳を含まない)」を等号・不等号で「"<40"」と指定します。
数式: =SUMIFS(E2:E11,C2:C11,"男",D2:D11,">=30",D2:D11,"<40")
「性別範囲から男を検索し、尚且つ年齢範囲から30歳以上40歳未満を検索して、来店数から一致する値を合計する」
「30代男性の来店数」が表示されました。
SUMIFSで日付より以降・以前など期間を指定する
日付の指定にも比較演算子(等号・不等号)を使えます。
売上表で「担当者Bの5月の売上」をSUMIFSで日付を指定して計算します。
「合計対象範囲」は「金額」のセル範囲、「条件範囲1」は「担当者」のセル範囲、「条件1」には「担当者B」をセル参照で指定します。
「5月の売上」は「5月1日以降」と「5月30日まで」の2条件で指定します。
- 「5月1日以降」">=2021/5/1"
- 「5月30日まで」"<=2021/5/30"
日付の指定は文字列と同じで、半角ダブルクォーテーション「”」で囲みます。
数式: =SUMIFS(D2:D15,B2:B15,B6,A2:A15,">=2021/5/1",A2:A15,"<=2021/5/30")
「担当者Bの5月の売上」が計算されました。
「以上・以下・未満」などを示す等号・不等号(比較演算子)の表記一覧
- = イコール。等しい。一致する
【表記例】=30 - <> 異なる。一致しない
【表記例】<>30 - > 大きい。一致を含まない
【表記例】 >30 - < 小さい。未満。一致を含まない
【表記例】 <30 - >= 以上。一致を含む
【表記例】 >=30 - <= 以下。一致を含む
【表記例】 <=30
SUMIFSの範囲を複数列で指定する
SUMIFSでは複数の列を範囲に指定することができます。
「合計対象範囲」「条件範囲」は行(列)の数を同じにする
SUMIFSで指定する「合計対象範囲」と「条件範囲」は、SUMIFでの範囲指定と同様、行(列)数が揃っている必要があります。数が同じでないとエラー「#VALUE!」が返されます。
下図のように商品名と金額が交互に並ぶ表で複数列の「合計対象範囲」を指定するときは「売上」から「売上」までの列範囲を全て選択します。
更に、「条件範囲」も「デスク」から「キャビネット」までの列範囲を全て選択します。この時、「合計対象範囲」と「条件範囲」の行数・列数は同じにします。
「条件」の指定にワイルドカードを使う
SUMIFSでは「条件」の指定でワイルドカードが使えます。テキストの中から対象となる文字列を抜き出して検索したい時には半角アスタリスク「*」や半角疑問符「?」と組み合わせて指定します。ここでは、「白のOA商品の売上合計」を集計するために半角アスタリスクで「OA*」「*白*」の2条件を指定します。
「条件範囲」は両方とも「デスク」から「キャビネット」までの列範囲を指定します。
SUMIFSで複数列を指定して「白のOA商品の売上合計」を集計しました。
SUMIFSの条件をセル参照で指定する
ヘアサロンの売上表で平日にカットを行った件数をSUMIFSで合計してみます。
「合計対象範囲」は数量の列「H:H」、「条件範囲1」は施術メニューの列「F:F」で「条件1」は「"カット"」。
「条件」に不等号で「~以外」「~を除外する」と指定する
「条件範囲2」に曜日の列「E:E」を指定し、本題の「条件2」には不等号の「~を含めない」をダブルクォーテーションで括って「"<>"」と入力、続けてアンパサンド「&」を入力し、「土曜日」と入ったセルをクリックします。
「"<>"&E10」=「土曜日を除外する」
「条件3」には「"<>"&E14」=「日曜日を除外する」を指定します。
数式: =SUMIFS(H:H,F:F,"カット",E:E,"<>"&E10,E:E,"<>"&E14)
※ここで注意! 曜日は、日付を表示形式で曜日に置換えたものだと適正に取得できません。文字列で「土曜日」「日曜日」と入力しておくか、WEEKDAY関数で曜日を取得しておきます。
セルでなく、曜日番号で指定する場合は以下のようになります。
「"<>7"」「"<>1"」
=SUMIFS(H:H,F:F,"カット",E:E,"<>7",E:E,"<>1")
※ダブルクォーテーションの位置に注意して下さい。これを間違えると「0」が返されたり、条件そのものが無視されたりします。
SUMIFS関数でエラーになる、結果が0になる
SUMIFSの計算結果で0が返されたり、#VALUE!になったりします。
そんな場合は、以下のことを確認してみて下さい。
- ① 「合計対象範囲」と「条件範囲」の行列の数が合っていない
- ② AND条件ではなく、OR条件の指定をしている
赤と黒の商品の金額を合計=OR条件
赤で黒の商品の金額を合計=AND条件 - ③ 数値や記号が半角でなく、全角になっている
- SUMIFS関数は複数の条件に一致した値をAND条件で合計する
- 条件の指定にはワイルドカードが使える
- 引数「合計対象範囲」と「条件範囲」は行(列)数を揃える
- 不等号(比較演算子)を使った「条件」はダブルクォーテーション「"」で括る
- 不等号(比較演算子)とセル参照はアンパサンド「&」でつなげる
- 「~以外」「~を除外する」という指定は不等号の「<>」