SUMIFS関数は、複数の条件をすべて満たす行だけを合計する関数です。条件範囲と条件をペアで並べるのが書き方の骨格。同じ列を2回指定すれば「4月1日から4月30日まで」のような期間も挟めます。条件は「かつ」で結ばれるため、「または」を書きたいときだけ別の組み立てが要ります。
この記事でわかること
- SUMIFS関数のペア構造と、条件を増やす書き方
- 期間で区切って合計する方法と、月ごとのクロス集計の組み方
- 時刻が入った日付で最終日が漏れる原因と直し方
- OR条件・「〇〇以外」・空白/空白以外の指定
#VALUE!や「0になる」ときの原因と、SUMIFとの引数順の違い
SUMIFS関数の構文と引数
構文
=SUMIFS(合計範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], ...)
| 引数 | 指定するもの | 注意点 |
|---|---|---|
| 合計範囲 | 実際に足すセル範囲 | 先頭に置く。SUMIFとは順番が違う |
| 条件範囲1 | 1つ目の条件を判定する列 | 合計範囲と同じ行数・同じ形にそろえる |
| 条件1 | 1つ目の条件 | 比較演算子やワイルドカードは " で囲む |
| 条件範囲2・条件2 | 2つ目以降 | 2つで1組。組を増やすほど条件が足される |
条件範囲と条件は必ず2つで1組です。片方だけ足すと引数の数が合わず、そのまま確定できません。
条件が複数あるとき、SUMIFSは「すべてを満たす行」だけを合計します。条件どうしは常に「かつ」で結ばれると覚えておけば、後半のOR条件の話がそのままつながります。
SUMIFS関数はExcel 2016以降のどのバージョンでも使えます。

基本の使い方
A列に日付、B列に支店、C列に商品、D列に金額が並ぶ売上表を例にします。大阪支店の「ペン」だけを合計する式です。
=SUMIFS($D$2:$D$100, $B$2:$B$100, "大阪", $C$2:$C$100, "ペン")
条件を直接書かず、集計表のセルを参照させると使い回せます。F列に支店名、1行目に商品名を並べたクロス集計表なら、次の形です。
=SUMIFS($D$2:$D$100, $B$2:$B$100, $F2, $C$2:$C$100, G$1)
$F2 は列だけ固定、G$1 は行だけ固定。こうすると右にも下にもコピーできる1本の式で、表全体が埋まります。範囲側の $D$2:$D$100 は両方固定です。
範囲の行数は必ずそろえる
合計範囲と条件範囲の行数がずれていると #VALUE! になります。どの範囲も同じ行番号で始め、同じ行番号で終えるのが鉄則です。
行が増える表なら、範囲を $D$2:$D$1000 のように余裕を持たせるか、テーブル(Ctrl+T)にして構造化参照で書くと保守が楽になります。
条件が1つでもSUMIFSで書ける
条件が1つのときSUMIF関数でも書けますが、SUMIFSでも問題なく動きます。後から条件を足すとき、式の末尾に1組追記するだけで済むのがSUMIFSの利点です。集計表の書式をチーム内でそろえたいなら、最初からSUMIFSに寄せる選び方があります。
期間で区切って合計する
日付の集計は、SUMIFSがSUMIFより素直に書けるところです。同じ列を2回指定して挟みます。
=SUMIFS($D$2:$D$100, $A$2:$A$100, ">="&DATE(2026,4,1), $A$2:$A$100, "<="&DATE(2026,4,30))
日付を ">=2026/4/1" と文字列で直接書くと、環境の日付設定によって解釈が変わることがあります。DATE関数か、日付を入れたセルの参照で指定するのが確実です。
セル参照にするなら、演算子と参照を & でつなぎます。
=SUMIFS($D$2:$D$100, $A$2:$A$100, ">="&$G$1, $A$2:$A$100, "<="&$G$2)
">=G1" と書くと「G1という文字そのもの」を探しに行きます。ここを & でつながないのは、よくある書き間違いです。
⛔ 時刻が入っていると最終日が漏れる
Excelの日付は内部で数値として持たれ、時刻はその小数部分に入ります。つまり 4月30日 14:20 は「4月30日」より大きい値です。
"<="&DATE(2026,4,30) は 4月30日 0時00分までしか拾わないため、時刻つきで記録されたその日のデータがまるごと漏れます。システムから書き出したログや受注データで実際に起きる事故です。
安全な書き方は、翌日の0時より前で切ることです。
=SUMIFS($D$2:$D$100, $A$2:$A$100, ">="&DATE(2026,4,1), $A$2:$A$100, "<"&DATE(2026,5,1))
<= を < に変え、終了日を翌日にする。この形なら時刻の有無にかかわらず結果が変わりません。
月ごとに集計する
月初日を並べた列を用意すれば、月末日を手で入力せずに済みます。EOMONTH関数は指定月の末日を、EDATE関数は数か月後の同じ日を返します。
=SUMIFS($D$2:$D$100, $A$2:$A$100, ">="&$F2, $A$2:$A$100, "<"&EDATE($F2,1))
F2に「2026/4/1」を入れておけば、5月1日より前=4月分が合計されます。F列を下へ伸ばすだけで月次表になり、時刻の問題も同時に回避できます。

OR条件・「〇〇以外」・空白の書き方
① OR条件(どちらか一方)
SUMIFSの条件は「かつ」で結ばれるため、"大阪" と "京都" を並べても該当0件になります。「または」は書き方を変えます。
方法は2つあります。足し算でつなぐのが最も読みやすい形です。
=SUMIFS($D$2:$D$100, $B$2:$B$100, "大阪") + SUMIFS($D$2:$D$100, $B$2:$B$100, "京都")
対象が増えるなら、条件を波かっこで並べて合計します。
=SUM(SUMIFS($D$2:$D$100, $B$2:$B$100, {"大阪","京都","神戸"}))
SUMIFSが3つの結果を返し、それをSUMがまとめて足す形です。「大阪または京都、かつ1万円以上」のようにANDと混ぜることもできます。
=SUM(SUMIFS($D$2:$D$100, $B$2:$B$100, {"大阪","京都"}, $D$2:$D$100, ">=10000"))
⚠️ 波かっこの並びを2組同時に使うのは避けてください。組み合わせの総当たりにはならず、1番目どうし・2番目どうしが対になって処理されます。総当たりが必要なら、条件ごとにSUMIFSを分けて足すほうが確実です。
② 「〇〇以外」で絞る
=SUMIFS($D$2:$D$100, $B$2:$B$100, "<>大阪")
<> が「等しくない」を表す演算子です。除外する対象が複数あるなら、条件を組で並べます。
=SUMIFS($D$2:$D$100, $B$2:$B$100, "<>大阪", $B$2:$B$100, "<>京都")
「かつ」で結ばれる性質が、除外条件ではそのまま素直に働きます。
③ 空白・空白以外で絞る
| 書き方 | 意味 |
|---|---|
"<>" | 空白以外の行 |
"=" | 空白の行 |
"*" | 何らかの文字列が入っている行(数値は対象外) |
未入力の行を除いて集計したいときは "<>" を1組足します。担当者未定の案件を除く、といった使い方です。
④ 部分一致で絞る
| 書き方 | 意味 |
|---|---|
"*ペン*" | 「ペン」を含む |
"東京*" | 「東京」で始まる |
"??支店" | 任意の2文字+「支店」 |
"~*" | アスタリスクそのもの |
セル参照と組み合わせるなら "*"&$F2&"*" の形にします。

うまくいかないときの原因と直し方
| 症状 | 主な原因 | 直し方 |
|---|---|---|
#VALUE! | 合計範囲と条件範囲の行数が違う | すべての範囲を同じ行番号でそろえる |
#VALUE! | 参照先の別ブックが閉じている | 表を同じブックへ移す。またはSUMPRODUCTで書き換える |
| 結果が0になる | 金額が文字列として入っている | 左寄せなら文字列。「区切り位置」で数値に変換する |
| 結果が0になる | 条件列に余分な空白/全角半角の混在 | TRIM・ASCで整える |
| 結果が0になる | 複数の値を1つの条件欄に並べた | ORは足し算か配列定数で書く |
| 最終日の分だけ合計されない | 日付に時刻が入っている | "<="&終了日 を "<"&翌日 に変える |
| 日付の条件が効かない | 演算子とセル参照を & でつないでいない | ">="&$G$1 の形にする |
| 非表示の行まで合計される | SUMIFSは表示状態を見ない | SUBTOTAL関数かAGGREGATE関数を使う |
| 再計算が重い | 範囲に列全体を指定している | $D$2:$D$5000 のように行数を区切る |
結果が0のときに見る順番
- 合計範囲だけをSUMしてみる —
=SUM($D$2:$D$100)が0なら、金額が文字列です - 条件を1組だけにして試す — どの条件で0になるかを切り分けます
- その条件をCOUNTIFで数える —
=COUNTIF($B$2:$B$100, $F2)が0なら表記ゆれです
条件を1組ずつ外していけば、原因の組はすぐ特定できます。式全体をにらむより、条件を減らすほうが速いという切り分け方です。
似た関数との使い分け
| 関数・機能 | 対応バージョン | 選ぶ場面 |
|---|---|---|
| SUMIFS | 2016〜 | 条件が2つ以上。条件1つでも書ける |
| SUMIF | 2016〜 | 条件が1つだけの短い式にしたい |
| SUMPRODUCT | 2016〜 | 単価×数量を掛けてから合計する。閉じた別ブックも参照できる |
| SUBTOTAL | 2016〜 | フィルタで絞った表示中の行だけを集計する |
| COUNTIFS | 2016〜 | 足すのではなく件数を数える |
| ピボットテーブル | 2016〜 | 集計軸を何度も入れ替えて確かめたい |
集計軸が固まっていないうちはピボットテーブル、決まった位置のセルに数値を出したいならSUMIFS、という分け方が扱いやすくなります。ピボットは式の保守が要らない代わりに、更新操作が必要です。
⛔ SUMIFとは引数の順番が逆
=SUMIF(範囲, 検索条件, 合計範囲)
=SUMIFS(合計範囲, 条件範囲1, 条件1, ...)
SUMIFSは合計範囲が先頭です。SUMIFの感覚のまま書くと、条件を判定するはずの列を合計してしまいます。2つを行き来せず、どちらかに統一しておくほうが事故が減ります。
よくある質問
Q1:条件はいくつまで指定できますか?
上限は127組とされていますが、実務でこの数に当たることはまずありません。むしろ条件が5つを超えたあたりから式が読めなくなるので、作業列で条件をまとめるか、ピボットテーブルへ切り替えるほうが保守しやすくなります。
Q2:条件のセルを空欄にしたら全件が合計されますか?
されません。空欄のセルを条件に渡すと「空白と一致する行」を探しに行き、結果は0になります。「未指定なら全件」にしたい場合は、IF($F2="", SUM($D$2:$D$100), SUMIFS(...)) のように、条件が空のときだけ別の式へ分岐させます。
Q3:大文字・小文字や全角・半角は区別されますか?
大文字と小文字は区別されません。ABC と abc は同じ扱いです。一方で全角と半角は別の文字として扱われるため一致しません。ASC関数やJIS関数で、あらかじめどちらかに寄せておくのが確実です。
Q4:別のシートやブックにある表も集計できますか?
別シートは =SUMIFS(売上!$D$2:$D$100, 売上!$B$2:$B$100, $F2) の形で問題なく集計できます。別ブックも指定はできますが、参照先のブックを閉じると #VALUE! になります。継続して使う集計表なら、同じブック内に取り込んでおくのが確実です。
Q5:合計範囲にエラー値が混ざっているとどうなりますか?
#N/A や #DIV/0! が1つでも含まれていると、SUMIFSの結果もエラーになります。元の数式をIFERROR関数で包むなどして、先にエラーを解消してください。文字列が混ざっているだけなら無視されます。
Q6:フィルタで絞り込んだ結果だけを合計できますか?
SUMIFSは行の表示・非表示を見ないため、隠れている行も合計します。表示中の行だけを対象にしたいなら、SUBTOTAL関数(集計方法 109)かAGGREGATE関数を使ってください。
まとめ
- 引数は合計範囲が先頭。条件範囲と条件は必ず2つで1組
- すべての範囲を同じ行数にそろえる。ずれると
#VALUE! - 期間は同じ列を2回指定。終了日は「翌日より前」で切ると時刻の漏れが消える
- 条件は常に「かつ」。ORは足し算か配列定数で書く
- 結果が0なら「①合計範囲をSUM ②条件を1組ずつ外す」の順で切り分ける
※関数の対応バージョンはExcelの一般提供時点の情報にもとづいています。お使いの環境や更新プログラムの適用状況により、利用できる関数や表示が異なる場合があります。

