SUMIFS関数とは?
SUMIFS関数は、Excelやスプレッドシートを使っていく中で最もよく使う関数の一つです。
SUMIFS関数は、複数の条件に応じて、その条件に当てはまるものだけの合計値を出すことができます。
例えば家計簿や会社の売上を出すときに、○○日以降の○○の項目だけ、と条件を設定したくなるときはありませんか?
そんなときに簡単に出すことができるようになります。
SUM(合計)+IF(条件設定)+S(複数)
と分解して覚えるとどんな関数なのかがわかりやすいですね!
SUMIFS関数の使い方
では、実際の使い方を解説していきます。
SUMIFS関数は、3ステップで設定をすることができます。
①合計したい範囲を指定する
②条件をつけたい範囲を指定する
③2個以上の場合、追加の条件範囲を指定する
それぞれのステップで記述していくのはまとめると下記の様になります。
=SUMIFS(合計範囲 , 条件範囲1 , 検索条件1 , 条件範囲2 , 検索条件2 , …)
SUMIFSの場合は条件をいくつでも設定できるので、条件が3個以上ある場合は、「条件範囲 , 検索条件」とセットにして追加で記述をすることが可能です。
さて、論より証拠ということで、ここからは実際に例を見ながら解説していきますね。
データは下記を使います。
このデータから、
「11/15以前にコンビニで使った金額の合計値を求める」
をやってみたいと思います。
いきなり答えを言ってしまいますが、
最終的な答えは下記のようになります!
この手順を解説していきます。
①合計したい範囲を指定する
まずは合計したい範囲を指定していきます。
今回の場合は、合計金額を出したいので、C2:C11(C2セル〜C11セル)を選択します。
=SUMIFS(C2:C11 ,
となります。
※SUMIF関数では、合計範囲は一番最後に指定をします。よく間違える人がいるんで少し注意です。
②条件をつけたい範囲を指定する
今回は、条件は2つありますね。
「11/15以前にコンビニで使った金額」というのは
・11/15以前に購入した
・項目がコンビニのもの
と言い換えることができるので、この2つの条件を設定していきます。
まずは1つ目の条件を設定します。
=SUMIFS(C2:C11 , A2:A11 , “<2020/11/15" ,
日付の範囲はA2〜A11セルなので、A2:A11と記述します。
また、今回は日付を条件にしていますので、上記のように記述をします。
11/15以前ということは、11/15よりも小さい、となるので不等号の”<"を使っていきます。
③2個以上の場合、追加の条件範囲を指定する
次に2つ目の条件を指定していきます。
項目がコンビニのもの
ということは項目の文字列が”コンビニ”となっているものと
言い換えられるため、下記のように記述をしていきます。
=SUMIFS(C2:C11 , A2:A11 , “<2020/11/15" , B2:B11 , "コンビニ")
これで関数が完成します。
このように
①合計したい範囲を指定する
②条件をつけたい範囲を指定する
③2個以上の場合、追加の条件範囲を指定する
と順番に沿って記述をしていくことで簡単に条件に応じた計算結果を出すことができます。
※条件が3個以上ある場合は③を繰り返し行って下さい。
色々な条件の指定方法
Excel/スプレッドシートでは様々な条件で検索を行うことができます。
「こんなかゆいところまで手が届くなんて…」と思うこともしばしばあります。
使い方がわかったところで検索条件の種類を紹介していきます。
○○以外
例題では、”コンビニ”となっているものを検索条件として指定しましたが、
逆に「コンビニ以外」の合計を出したい、といったときは”<>“という記号を使って指定をします。
=SUMIFS(C2:C11 , B2:B11 , “<>コンビニ”)
これでコンビニ以外の金額の合計を出すことができます。
“<>“は○○以外という指定でよく使いますので覚えておくと便利でしょう。
○○を含むものを指定する
データがあいまいになっていて、同じコンビニの項目でも、
・コンビニ(食費)
・コンビニ(日用品)
のようになっていることもあるとおもいます。
こういった場合は、「コンビニの文字列が”含む”もの」という指定を行っていきます。
含むを指定するのが”*”(アスタリスク・ワイルドカード)です。
検索する文字列の前後にワイルドカードをつけてあげることで、○○を含むもの、と指定することができます。
=SUMIFS(C2:C11 , B2:B11 , “コンビニ“)
これでコンビニの文字列を含むものを検索する、となります。
前に○○を含む・後に○○を含む
ワイルドカードを利用することで、更に細かいあいまい検索を行うことも可能です。
例えば、
・コンビニ(おにぎり)
は指定したいが、
・海外コンビニ
は除きたいという場合
=SUMIFS(C2:C11 , B2:B11 , “コンビニ*”)
※コンビニの前にはワイルドカードをつけない
というように指定を行います。
つまり、ワイルドカードを指定した場合は、その方向があいまい検索になる、と覚えていけば良いのです。
逆に
・海外コンビニ
は指定するが
・コンビニ(おにぎり)
は数えないという場合
=SUMIFS(C2:C11 , B2:B11 , “*コンビニ”)
となります。
少し応用になりますが、
=SUMIFS(C2:C11 , B2:B11 , “コンビニ”)
と入力すれば
「コンソールビニエンス」
というコンとビニの間になにか文字列が入っているへんてこなデータを数えるようにできます。
範囲を指定する(○○〜△△の間)
1日〜15日に買い物をした金額を知りたい場合
要素を分解して考えます。
1日〜15日というのは、
・1日より後(1日以上)
かつ
・15日より前(15日以下)
という条件のため、この2つの条件を指定することで
「1日〜15日」の結果を出すことができます。
=SUMIFS( C2:C11, A2:A11,”>=2020/11/1″ , A2:A11 , “<=2020/11/15")
というようになります。不等号がわからない方は下記を参考にして下さい。
不等号の種類は以下の4種類です。
<○○(○○より小さい)
>○○(○○より大きい)
>=○○(○○以上)
<=○○(○○以下)
OR条件で指定する(○○か△△)
OR条件での指定の場合、Excelとスプレッドシートで仕様が異なるため、少しやり方が異なります。
スプレッドシートを使ってOR条件で検索をしたい場合は、2つのSUMIFS関数を足し算する形式になります。
例えば、項目が「洋服」か「コンビニ」の条件の金額合計値を出したい場合は、
=SUMIFS(C2:C11 , B2:B11 , “コンビニ”)+SUMIFS(C2:C11 , B2:B11 , “洋服”)
という感じで、2つの式を足し合わせる形になります。
一方、ExcelでOR条件を指定していく場合は、配列での条件指定というものを行います。
※スプレッドシートの方法でも問題なく計算できるのでわかりにくいという方はスプレッドシートの方法を使ってください。
配列での指定条件は下記になります。
=sum((SUMIFS(C2:C11 , B2:B11 , { “コンビニ” , “洋服 ” } ))
{}内に条件を入れることで、ORとして認識をさせることができます。忘れがちなのがSUM関数で括ることです。お忘れのないように!
よくある!SUMIFE関数でエラーがでる原因
最後にSUMIFS関数でよく起こるエラーをご紹介します。
なんだかうまくいかないんだよね…という悩みを抱えて読んでいる方は参考にしてみてください。
指定箇所を間違えている
SUMIFS関数では、範囲と条件の指定の順番を守らなければエラーとなります。
= SUIMIFS (合計したい範囲 , 条件検索したい範囲1 , 検索条件1 , 条件検索したい範囲2 , …)
関数内で指定している範囲や条件の順番は間違っていませんか?
よくあるのがSUMIF関数と混同してしまうケースです。
SUMIF関数では、合計したい範囲を最後に指定します。
= SUMIF(条件検索したい範囲 , 検索条件 , 合計したい範囲)
SUMIFS関数とSUMIF関数は未だに僕もやってしまうケアレスミスなので要注意です!
指定範囲の大きさが異なる
SUMIFS関数内では、指定した範囲の大きさが異なってしまうとエラーが出てしまいます。
例えば、
=SUMIFS(C2:C11 , B2:B12 , “洋服”)
のように指定すると#VALUE! エラーとなります。
これは、
C2:C11とB2:B12の大きさが異なるからです。
この場合は、
=SUMIFS(C2:C11 , B2:B11 , “洋服”)
のように縦の大きさを揃えるようにしましょう。
毎回指定が面倒くさい…といった場合は
=SUMIFS(C:C , B:B , “洋服”)
のように指定をしていきましょう。
C:Cのように指定することで列全体を指定することができます。
列全体を指定することでエラーも防げて、データ数が増えても関数をいちいち変えなくても良くなるので、特に問題ない場合は列全体を指定することをおすすめします。
文字列としての指定方法を間違える
覚えたての頃によくやってしまうのが、文字列指定の「”」(ダブルクオテーション)を忘れることです。
例えば、
=SUMIFS(C2:C11 , B2:B11 , 洋服)
と指定すると答えが「0」と出てきます。
一見エラーがでないのですが、正しい答えではないですよね。
これは「洋服」を「”洋服”」と指定していないため、システム上で洋服というテキストを検索することができていないためです。
関数がなにか変だなと思った時には細かい部分まで見直していくようにしましょう!