SUMIFS関数の使い方|複数条件で合計する

SUMIFS関数の使い方|複数条件で合計する

執筆者:

カテゴリ:

SUMIFSは、複数の条件をすべて満たす行だけを合計する関数です。

「東京の、商品Aの、4月分の売上」のように条件が重なる集計で使います。SUMIF の複数条件版ですが、引数の順番が逆なので注意が必要です。

書式

=SUMIFS(合計する範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], ...)
引数 内容
合計する範囲 最初に書く。実際に足す列
条件範囲/条件 ペアで並べる。いくつでも追加できる

SUMIF とは順番が逆です。

=SUMIF(条件範囲, 条件, 合計範囲)     ← 合計範囲が最後
=SUMIFS(合計範囲, 条件範囲, 条件)    ← 合計範囲が最初

これが最も多い間違いの原因です。条件が1つでも常にSUMIFSを使う、と決めてしまえば混同しません。後から条件を足すときも書き直しが不要になります。

基本の使い方

A B C D
1 日付 支店 商品 売上
2 2026/4/3 東京 A 1200
3 2026/4/8 大阪 A 800
4 2026/5/2 東京 B 1500
5 2026/5/9 東京 A 950

東京かつ商品Aの売上を合計します。

=SUMIFS(D2:D5, B2:B5, "東京", C2:C5, "A")

結果:2150(1200 + 950)

条件はすべて満たす必要があります(AND条件)。

条件の書き方

SUMIF と同じです。

条件 意味
"東京" 完全一致
">1000" 1000より大きい
">=1000" 1000以上
"<>東京" 東京以外
"東*" 「東」で始まる
"*営業*" 「営業」を含む
"" 空欄
"<>" 空欄でない

セルの値と比較するときは & で連結します。

=SUMIFS(D:D, D:D, ">"&G1)

">G1" と書くと文字列の「G1」を探します。 ここが最頻出の間違いです。

日付の期間を指定する

SUMIFSが最も活きるのがこれです。同じ列に2つの条件を付けられます。

=SUMIFS(D:D, A:A, ">="&DATE(2026,4,1), A:A, "<"&DATE(2026,5,1))

「4月1日以上、かつ5月1日未満」=4月分です。

上限は < で翌月1日を指定するのが安全です。<= で4月30日を指定すると、時刻を含むデータ(4月30日 15:00 など)が漏れます。ここは実務でよく起きる漏れです。

セルで期間を指定するなら次の形です。

=SUMIFS(D:D, A:A, ">="&G1, A:A, "<="&G2)

日付を文字列で直接書く(">=2026/4/1")のは避けてください。 環境によって解釈が変わります。DATE() かセル参照を使ってください。

集計表を作る

行に支店、列に月を置いたクロス集計表は、SUMIFSと絶対参照の組み合わせで作れます。

=SUMIFS($D:$D, $B:$B, $F2, $A:$A, ">="&G$1, $A:$A, "<"&EOMONTH(G$1,0)+1)
  • $F2 … 行方向は支店名(列を固定)
  • G$1 … 列方向は月初日(行を固定)
  • EOMONTH で月末を求め、+1して翌月1日にしている

この1本を作って全方向にコピーすれば、集計表が完成します。 $ の付け方が肝なので、まず1セルで正しく動くことを確認してからコピーしてください。

OR条件を書きたいとき

SUMIFSの条件はすべて「かつ」で結ばれます。東京かつ四月、という絞り込みはできますが、東京または大阪、という絞り込みは直接は書けません。

実務的な解決策は三つあります。ひとつは、条件ごとにSUMIFSを書いて足す方法です。東京の合計と大阪の合計を足せば済みます。条件が二つ三つなら、これが最も読みやすく、後から見ても何をしているか分かります。

ふたつめは、元データに区分の列を追加する方法です。東京と大阪をまとめて関東圏という区分にしておけば、SUMIFSの条件はひとつで済みます。集計軸が固定されているなら、こちらのほうが保守が楽です。

みっつめは、SUMPRODUCTを使う方法です。条件式を掛け合わせたり足し合わせたりすることで、複雑な条件を一本の数式で書けます。ただし読みにくくなるので、自分以外が触るファイルでは避けたほうが無難です。

なお、同じ列に対して複数の値のいずれかという条件を書きたい場合、配列を使う書き方もあります。条件の部分に複数の値を並べて渡し、全体をSUMで包む形です。慣れれば短く書けますが、環境によって挙動が違うことがあるため、確実性を優先するなら足し算のほうが安全です。

SUMIFSはAND条件専用です。「東京または大阪」を出したいときは、次のいずれかを使います。

1. 足し算する

=SUMIFS(D:D, B:B, "東京") + SUMIFS(D:D, B:B, "大阪")

条件が2〜3個なら、これが最も分かりやすい。

2. 配列で渡してSUMで包む

=SUM(SUMIFS(D:D, B:B, {"東京","大阪"}))

{} の中に候補を並べると、それぞれの結果が配列で返り、SUMで合計されます。候補が多いときはこちらが短いです。

3. 別リストと組み合わせる

候補が可変なら、SUMPRODUCTQUERY のほうが保守しやすくなります。

=QUERY(A:D, "select sum(D) where B matches '東京|大阪'", 1)

よくある失敗

0になる・合計が合わない

1. 引数の順番が逆

合計する範囲を最後に書いていませんか。SUMIFSは合計範囲が最初です。

2. 範囲の行数がずれている

合計範囲が D2:D100、条件範囲が B2:B50 のように長さが違うとエラーか誤答になります。すべての範囲の開始行と行数を揃えてください。 列全体(D:DB:B)で統一するのが最も安全です。

3. 余分なスペース・全角半角

"東京 ""東京" は別物です。"A""A" も別物です。

4. 数値が文字列になっている

セルが左寄せなら文字列です。COUNT で確認できます。

5. 日付に時刻が含まれている

<= で月末を指定すると、時刻付きのデータが漏れます。< で翌月1日を指定してください。

#VALUE! が出る

範囲の大きさが揃っていません。すべての範囲を同じ行数にしてください。

Excelとの違い

書式・挙動ともにExcelと同じです。 {} による配列渡しも共通です。

Googleスプレッドシート特有の選択肢として、QUERY があります。条件が複雑になったり、グループ別の集計表を一度に作りたい場合は、SUMIFSを並べるよりQUERYのほうが短く書けます。

=QUERY(A:D, "select B, sum(D) where A >= date '2026-04-01' group by B", 1)

支店ごとの合計が一度に出ます。SUMIFSを支店の数だけ並べる必要がありません。


引数の順番を間違えないための考え方

SUMIFSでつまずく最大の原因は、引数の順番がSUMIFと逆になっていることです。SUMIFは条件範囲を先に書いて合計範囲を後ろに置きますが、SUMIFSは合計範囲を先頭に書きます。この一点だけで結果が変わるため、SUMIFに慣れているほど間違えます。

覚え方としては、SUMIFSは条件をいくつでも足していける構造になっている、と考えると自然に理解できます。条件の数が可変なので、固定である合計範囲を先頭に置くしかありません。二番目以降は、条件範囲と条件をペアで並べていく形になります。ペアで並ぶという構造さえ頭に入れば、条件が三つでも五つでも同じ要領で書けます。

もうひとつ間違えやすいのが、すべての範囲の行数を揃える必要があるという点です。合計範囲を二行目から百行目までにしたなら、条件範囲もすべて二行目から百行目までにします。片方だけ範囲を広げると、対応する行がずれて、まったく違う値が集計されます。エラーにならず数字が返ってくるため、間違いに気づくのが遅れます。数式を書き終えたら、範囲の開始行と終了行がすべて一致しているかを目で確かめる習慣をつけてください。

条件を別のセルから取ってくる場合の書き方も、SUMIFと同じです。比較演算子とセル参照はアンパサンドで連結します。連結せずに並べて書くと、セル番地そのものが文字列として扱われ、該当なしになります。条件を可変にした瞬間に動かなくなるのは、ほぼこれが原因です。


期間で絞り込む書き方

SUMIFSが本領を発揮するのは、日付の期間を条件にするときです。SUMIFでは条件をひとつしか指定できないため、開始日以降の合計から終了日より後の合計を引くという回りくどい書き方をしていました。SUMIFSなら、同じ列に対して二つの条件を指定するだけで期間が絞り込めます。

具体的には、日付の列を条件範囲として二回指定します。一回目は開始日以上という条件、二回目は終了日以下という条件です。同じ範囲を二度書くことになりますが、これが正しい書き方です。範囲を一度しか書かないと、条件がひとつしか効きません。

開始日と終了日は、数式に直接書かずにセルに置いて参照してください。日付を文字列として数式に埋め込むと、環境や地域設定によって解釈が変わることがあります。セルに日付として入力しておけば、内部の数値で比較されるので確実です。集計期間を変えたいときも、セルの値を書き換えるだけで済みます。

月次の集計表を作る場合は、月初日と月末日を別の列に用意しておくと管理が楽になります。月末日はEOMONTH関数で自動的に求められるので、月初日だけ入力すれば済みます。うるう年や月ごとの日数を気にする必要がなくなります。

時刻を含む日付を扱う場合は注意が必要です。終了日を以下という条件で指定すると、その日の零時ちょうどまでしか含まれません。同じ日の午後に発生したデータは対象から外れます。翌日の零時未満という条件にするか、時刻を切り落とした作業列を用意してください。


集計表を組み立てるときの参照の固定

SUMIFSを実務で使う場面のほとんどは、縦横に項目を並べた集計表の作成です。行に商品分類、列に月を並べ、交差するセルに集計値を出す、という形が典型です。

このとき鍵になるのが、参照の固定の仕方です。合計範囲と条件範囲は表全体で共通なので、完全に固定します。一方、条件として参照する見出しのセルは、行や列に応じて動く必要があります。行見出しを参照するなら列だけを固定し、列見出しを参照するなら行だけを固定します。

この使い分けができていれば、左上の一つのセルに数式を書いて、表全体にコピーするだけで集計が完成します。逆に固定を間違えると、右や下にコピーした瞬間にすべてがずれます。数式を書いたら、まず右に一つ、下に一つコピーして、想定どおりの値になっているかを確かめてください。この確認を先にやるだけで、大きな手戻りを防げます。

集計表が完成したら、合計行と合計列を足して、全体の合計が元データの合計と一致するかを確認します。一致しなければ、どこかの条件が漏れているか、範囲がずれています。この検算は数十秒で終わるので、必ずやってください。


よくある質問

Q. 数式は合っているのに0が返ります

条件のどれか一つが一致していません。条件を一つずつ外して試すと、どれが原因かが分かります。まず条件を一つだけにして正しい値が返るか確かめ、そこから一つずつ足していく手順が確実です。

Q. 文字列の条件が一致しません

セルの中身に前後の空白が入っている可能性があります。見た目では分からないので、文字数を数えて確かめてください。

Q. 条件はいくつまで書けますか

実用上、困らないだけの数を指定できます。ただし条件が五つを超えるようなら、元データの持ち方を見直したほうが良いことが多いです。

Q. 空白を条件にできますか

ダブルクォートを二つ並べた形で空白を指定できます。空白以外を指定したい場合は、不等号を二つ並べた記号を使います。

Q. 部分一致で集計できますか

ワイルドカードが使えます。ただし文字列に対してのみ有効で、数値には効きません。

Q. 件数を数えたいときは

COUNTIFSを使います。書き方はSUMIFSとほぼ同じで、合計範囲がない分だけ引数が一つ少なくなります。

Q. 平均を出したいときは

AVERAGEIFSがあります。こちらも書き方は同じです。

Q. 集計が重いのですが

範囲を列全体で指定していないか確認してください。実際にデータのある範囲に絞るだけで、かなり改善します。

まとめ

  • 書式は =SUMIFS(合計範囲, 条件範囲1, 条件1, ...)
  • 合計範囲が最初SUMIF とは逆
  • 条件が1つでもSUMIFSで書くと決めれば混同しない
  • 期間指定は ">="&DATE(...)"<"&DATE(翌月1日)
  • OR条件は足し算か {} で渡す
  • 範囲の行数は必ず揃える

関連する関数