🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

ExcelのSUMIFS関数 — 条件付き合計を1式で(そしてSUMIFが罠である理由)

|

ExcelのSUMIFS関数 — 条件付き合計を1式で(そしてSUMIFが罠である理由)

要点SUMIFS は列を合計しますが、対象は与えた条件をすべて満たした行だけ です。構文は =SUMIFS(合計範囲, 条件範囲1, 条件1, …)。最大の落とし穴は、SUMIFSUMIFS で引数の順番が真逆なこと——SUMIF は先に条件、最後に合計。SUMIFS先に合計。一方からもう一方へ式をコピーすると、エラーも出さずに違う列を合計します。 対策は習慣化です。条件が1つでも常に SUMIFS を使う。セルと比べるときは演算子を つなげて ">"&G1">G1" は不可。複数条件は AND で結ばれます。OR は配列を 渡して SUM で包む。対応は Excel 2007 以降です。

=SUMIFS(Amount, Region, "West")
=SUMIFS(Amount, Region, "West", Amount, ">"&G1)

これから書く「条件付きの合計」は、ほぼすべて同じ問いに帰着します——この行のうち、 条件に合うものだけを足す。Excel はそのために2つの関数を用意していますが、古い方の SUMIF は15年もの間、人々に間違った数字をつかませてきた罠です。本記事は1つの強い おすすめを軸に据え、そのうえで条件付き合計をきちんと動かすための条件の書き方を解説 します。

この記事で学べること

  • 考え方の軸:SUMIFS は「合計で終わる WHERE 句」
  • SUMIFSUMIFS で引数が逆になる理由——そして SUMIF を捨てるべき理由
  • 条件のミニ言語:演算子は引用符の中、">"&セル でセルと比較
  • AND は標準装備、OR は配列と SUM でひと工夫
  • ロケールに左右されずに2つの日付の間を合計する方法
  • 今どきの一手:SUMIFS + UNIQUE でカテゴリ別集計表をスピルさせる

考え方の軸:合計で終わる WHERE 句

SQL で考えるなら、SUMIFSSELECT SUM(amount) … WHERE region = 'West' AND amount > 1000 です。まず合計する列を指定し、そこに条件を積み上げる。Excel はすべて の条件を満たした行を残し、その値を足します。SUMIFS で人がつまずくところは、この絵が 頭に入れば全部消えます——最初の引数が足す対象で、その後ろの各ペアはフィルターです。

' 「Region が West の行について、Amount 列を合計」
=SUMIFS(Amount, Region, "West")

' 2つ目のフィルターを追加 — 両方が真でなければならない(AND)
=SUMIFS(Amount, Region, "West", Product, "Widgets")

条件範囲合計範囲同じ高さでなければなりません——同じ表の並んだ列だから です。形が合わないと #VALUE! になります。

命を救うルール:SUMIF を使うのをやめる

ここが罠で、このページのどのコツよりも価値があります。2つの関数は、引数の順番が互いに です。

' SUMIF — 先に条件にかける範囲、合計する範囲は最後(省略可)
=SUMIF(Region, "West", Amount)

' SUMIFS — 合計する範囲が先、そのあとに条件のペア
=SUMIFS(Amount, Region, "West")

2回読んでください。SUMIF では Amount3番目の引数。SUMIFS では1番目です。 人は SUMIF を覚え、やがて2つ目の条件が必要になって SUMIFS に乗り換え、古い順番の ままで範囲を貼り付けます——すると Excel は Region(文字列なので、わけのわからない数字 かゼロに合計される)を合計し、Amount を条件範囲として扱います。エラーは出ません。 もっともらしく見える、間違った合計が出るだけです。

判断はきっぱりしています。SUMIF の存在を忘れること。SUMIFSSUMIF ができる ことを全部こなし、条件が1つでも10個でも引数の順番は変わらず、入れ替えで噛まれることが ありません。SUMIF が「節約」してくれるのはカンマ1つの打鍵だけ。財務モデルで黙って エラーを出すリスクを冒す理由にはなりません。

条件のミニ言語:演算子は引用符の中で生きる

条件 という引数は小さな文字列言語で、固定値ではなくセルと比べようとすると誰もが 最初につまずきます。次の3つのルールでほぼ全部カバーできます。

=SUMIFS(Amount, Amount, ">1000")        ' 直値のしきい値 — ただの文字列でOK
=SUMIFS(Amount, Amount, ">"&G1)          ' セルと比較 — 演算子をつなげる
=SUMIFS(Amount, Region, "West*")         ' ワイルドカード — "West" で始まる地域すべて

致命的なミスは ">G1" です。これは「G1 の値より大きい」という意味ではなく、文字どおり "G1" という文字列に等しい行を探し、見つからずに 0 を返します。演算子(><>=<>)は引用符の、セル参照はに置いて & でつなぐ。ここが腑に落ちれば、 ">="&TODAY()"<>"&G1"*"&G1&"*" がすべて自然に読めます。文字列の一致は 大文字小文字を区別せず、*(任意の文字列)/ ?(任意の1文字)がワイルドカード—— アスタリスクそのものを探すなら ~* でエスケープします。

AND はタダ、OR は自分で組み立てる

条件のペアを積み上げると AND になります——すべての条件を満たす必要があります。 「OR」の引数はありません。複数の値のどれかに一致する行をきれいに合計するには、 配列の条件SUM で包みます。配列の条件を渡した SUMIFS は値ごとに1つずつ合計を 返し、SUM がそれらを足すからです。

' AND — 標準装備:West かつ Widgets
=SUMIFS(Amount, Region, "West", Product, "Widgets")

' OR — 配列の条件 + SUM:West または East
=SUM(SUMIFS(Amount, Region, {"West","East"}))

これが大事なのは、素朴な対処——SUMIFS を2つ足す——が2値なら問題なくても拡張が 利かず、OR の条件が同じ行で両方とも真になりうる場合に黙って二重カウントするから です。SUM(SUMIFS(…{…}…)) のパターンは任意の長さのリストに対応でき、一度見れば これが定石になります。

2つの日付の間を合計する(ロケール安全なやり方)

日付範囲は、同じ日付列に対する2つの条件にすぎません——下限と上限です。日付を文字列で 打ち込まないこと(">01/06/2026" は米国と欧州で読み方が違い、まったく一致しないことも あります)。DATE で日付を組み立てれば、どこでも曖昧さがありません。

=SUMIFS(Amount, OrderDate, ">="&DATE(2026,1,1), OrderDate, "<="&DATE(2026,3,31))

同じ列、2つの条件、その間は AND——これで四半期の合計です。直値をセル参照 (">="&H1)に替えれば、生きた・パラメータ化されたレポートになります。

今どきの一手:集計表を丸ごとスピルさせる

ここで条件付き合計と動的配列が出会います。UNIQUE を 条件として渡すと、たった1つの SUMIFSすべてのカテゴリの合計を一度にスピル します——ドラッグも作業用リストも不要です。

=SUMIFS(Amount, Region, UNIQUE(Region))    ' 重複なしの地域ごとに合計を1つずつスピル

=UNIQUE(Region) を1つのセルに置き、その隣に SUMIFS を並べれば、新しい地域が現れる たびに伸びる自動更新の集計表が出来上がります。本当に複雑な抽出には FILTER を持ち出して結果を足すこともできますが、 「カテゴリ別の合計」なら、UNIQUE スピルに対する SUMIFS こそ最も無駄のない道具で、 SUMPRODUCT の配列より大きなシートで圧倒的に速いです。

判断:SUMIFS か SUMPRODUCT か、それともピボットテーブルか

複数列の条件にいまだ SUMPRODUCT((Region="West")*(Amount)) を書いているなら、その パターンは SUMIFS より前の時代のもの——遅く、読みにくく、残す理由は2つの列を掛けて かつフィルターしたい(加重合計)ときだけです。同じ集計を毎月手で作っているなら、 探索的なスライスにはピボットテーブルの方が向いています。SUMIFS が勝つのは、特定の 数字を、生きたまま、モデルに埋め込んで欲しいとき——つまり大半の場面です。

ExcelMaster の使いどころ

実務の SUMIFS の多くは、数式の言葉ではなくビジネスの言葉で語られます——第1四半期の West 地域で、G1 セルの承認しきい値を超える売上の合計ExcelMaster はその一文を 数式に変えます——正しい引数の順番、">"&G1 の連結、DATE() ベースの境界まで含めて—— そして置きたい場所に配置します。あなたは欲しい数字を述べるだけ。SUMIFS を手打ちする のを面倒にしている条件の文法は、こちらが引き受けます。

よくある質問

SUMIF が間違った合計(やゼロ)を返すのはなぜ?

ほぼ確実に引数の順番です。SUMIF(範囲, 条件, 合計範囲) は先に条件、最後に合計。 SUMIFS(合計範囲, 範囲, 条件)先に合計。並べ替えずに式を移すと、Excel は違う列を 合計しています。すべて SUMIFS に統一すれば、順番は常に「合計範囲が先」です。

SUMIFS を複数条件で使うには?

条件範囲, 条件 のペアを追加します——AND で結ばれるので、すべての条件を満たす必要が あります:=SUMIFS(Amount, Region, "West", Product, "Widgets")。各条件範囲は合計範囲と 同じ高さでなければなりません。

SUMIFS で OR 条件を作るには?

候補を配列で渡し、SUM で包みます:=SUM(SUMIFS(Amount, Region, {"West","East"}))。 これで、SUMIFS を単純に2つ足したときに起きる二重カウントを避けられます。

2つの日付の間を合計するには?

日付列に2つの条件を、DATE() で組み立ててロケール安全にします: =SUMIFS(Amount, OrderDate, ">="&DATE(2026,1,1), OrderDate, "<="&DATE(2026,3,31))

SUMIFS は Excel 2016 以前で使える?

使えます。SUMIFS は Excel 2007 から、SUMIF は1990年代から搭載されています。両方とも サポート対象の全バージョンで動くので、罠の多い古い SUMIF を使い続ける互換性上の理由は ありません。

検証環境

検証環境: Excel 365(Windows 11)— 最終確認 2026-06-24。

関連ガイド: ExcelのCOUNTIFS関数 · ExcelのAVERAGEIFS関数 · ExcelのFILTER関数 · ExcelのUNIQUE関数