Article

Excel SUMIFS 関数の使い方|SUMIF との違い・複数条件・Excel 2024 で気づきにくい 4 つの罠

この記事で分かること

SUMIFS 関数で複数条件の合計を求める基本構文と、Excel 2024 で見落としやすい 4 つの罠(行数ずれ・ワイルドカード・文字列保存の数値・スピル衝突)を実機検証つきで解説。

Excel の SUMIFS 関数は、複数の条件を AND でつなぎ、一致した行の合計を返す関数です。SUMIF(条件 1 つ)の上位互換にあたり、業務で売上集計や経費集計をするなら必修の関数です。

本記事では、Microsoft Excel 2024(永続版 / Build 19929.0)の実機で全数式を検証し、基本構文・複数条件・日付期間・ワイルドカード・別シート参照に加え、Excel 2024 で見落としやすい 4 つの罠までまとめて解説します。

長くなるので、目次で必要な章へ飛んでください。「とりあえず動かしたい」方は H2-2、「ハマっている」方は H2-9 の罠 4 つを直接ご覧ください。

【30 秒で分かる】SUMIFS 関数とは ― 複数条件で合計する関数

SUMIFS 関数は、複数の条件をすべて満たす行を抽出して、その金額(や数量)を合計する関数です。たとえば「東京支店の、りんご商品の、4 月以降の売上合計」のように、条件を増やしてピンポイント集計ができます。

  • 条件は AND(すべて満たす)でつながる
  • 条件は最大 127 個まで指定できる
  • SUMIF(条件 1 つ)の上位互換
  • Excel 2007 以降に追加。Excel 2024 / Microsoft 365 では 条件に配列を渡すとスピル展開するようになった

本記事のサンプルデータと結果はすべて、Excel 2024(Build 19929.0、日本語版)の実機で検算しています。各数式の右側に書いてある数値は実機での結果です。

サンプルデータ(A〜G 列、行 2〜11)

本記事の数式と結果はすべて、次のサンプルデータを前提にしています。手元で同じ結果を再現したい場合は、新規ブックの A〜G 列に以下のとおりに入力してください。

A: 日付B: 支店C: 商品D: 金額F: メモG: 金額(文字列)
22026/4/1東京りんご12,000限定A型“12000”
32026/4/2大阪みかん8,000通常?A“8000”
42026/4/3東京ぶどう15,000ぶどう*限定“15000”
52026/4/4名古屋りんご9,000りんご限定“9000”
62026/4/15東京みかん7,000通常XA“7000”
72026/4/20大阪りんご11,000限定B型“11000”
82026/5/1東京ぶどう14,000通常YA“14000”
92026/5/2名古屋みかん6,500限定?C“6500”
105,000ぶどう種類限定
113,000ぶどう特売限定
  • 列 E は使いません(撮影上の余白として空けています)
  • 行 10〜11 は Trap 2(ワイルドカード未エスケープ)専用の追加行。基本例は行 2〜9(D2:D9)だけで完結します
  • 列 G の "12000" 等のクォートは 値そのものが文字列として保存されていることを示します(NumberFormat=”@” を先に設定してから入力)。値の引用符は表記上のものでセルには含まれません。Trap 3 はこの「値の型」状態でないと再現しません
  • 列 A の日付は yyyy/m/d 書式、列 D は #,##0 書式で表示しています

SUMIFS 関数の基本構文 ― 合計範囲が最初、条件は後ろ

基本構文は次のとおりです。

=SUMIFS(合計対象範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, ...)

大事なポイントは 第 1 引数が「合計したい数値の範囲(合計対象範囲)」であること。SUMIF とはこの順序が違うので、後で混同しないよう先に押さえておきましょう。

サンプルデータのうち基本 8 行(行 2〜9)に対して「東京支店の合計」を求める最も簡単な式は次のとおり。

=SUMIFS(D2:D9, B2:B9, "東京")    →  48000
Excel 2024 の数式バーで SUMIFS の基本構文を示し、結果セルに 48000 が表示されている画面
SUMIFS の基本: 合計対象範囲が第 1 引数。数式バーに =SUMIFS(D2:D9,B2:B9,"東京")、結果セルは 48000。

条件範囲(B2:B9)と合計対象範囲(D2:D9)は 同じ行数・同じ起点 でなければなりません。ここがずれると、後述する Trap 1 のように #VALUE! ではなく「違う数値が静かに返る」状態になり、誤集計に気づかない事故が起きます。

SUMIF との違い ― 引数順序が逆(最頻誤り 1 位)

SUMIFS と SUMIF を取り違えるミスは、Excel 関数のなかでも特に多い失敗です。違いは引数の順序です。

SUMIF :  =SUMIF(条件範囲, 条件, 合計範囲)
SUMIFS:  =SUMIFS(合計範囲, 条件範囲, 条件, ...)   ← 合計範囲が「先頭」
関数第 1 引数条件数配列スピル (Excel 2024)
SUMIF条件範囲1 つ○(criteria に配列を渡すとスピル)
SUMIFS合計範囲1〜127○(criteria1 などに配列を渡すとスピル)

「SUMIF はスピルしない」と書いている古い解説が多いのですが、これは Excel 2024 / Microsoft 365 では誤り です。両方とも配列条件でスピルします。違いは「条件の数を 1 つしか書けるか複数書けるか」だけです(実機検証済 / Build 19929.0)。

Excel 2024 で SUMIF と SUMIFS を並べた比較画面。両方とも 48000 を返している
SUMIF (K3) と SUMIFS (K2) は引数順序が逆だが、結果は同じ 48000 になる。

複数条件 (AND) の基本 ― 2〜3 条件の実例

SUMIFS の真価は条件を 2 つ以上指定できる点にあります。条件範囲と条件をペアで追加していくだけで、AND 集計が書けます。

2 条件:  =SUMIFS(D2:D9, B2:B9, "東京", C2:C9, "りんご")             →  12000
3 条件:  =SUMIFS(D2:D9, B2:B9, "東京", C2:C9, "りんご",
                A2:A9, ">=2026/4/1")                              →  12000

同じ列に対して「以上 / 未満」のような数値範囲指定もできます。

=SUMIFS(D2:D9, D2:D9, ">=10000", D2:D9, "<15000")    →  37000
(金額が 10000 以上 15000 未満の合計)
Excel 2024 で SUMIFS の 2 条件・3 条件・同列範囲指定の結果が並んでいる画面
2 条件 (12000)、3 条件 (12000)、同列範囲指定 (37000) の対比。

日付期間で挟む ― 月初以上・翌月初未満が安全

「2026 年 4 月分の売上合計」のような期間集計は、月初 >= かつ翌月初 < で挟むのが定番です。

リテラル日付:    =SUMIFS(D2:D9, A2:A9, ">=2026/4/1", A2:A9, "<2026/5/1")  →  62000
DATE 連結:       =SUMIFS(D2:D9, A2:A9, ">="&DATE(2026,4,1),
                          A2:A9, "<"&DATE(2026,5,1))                      →  62000
セル参照連結:    =SUMIFS(D2:D9, A2:A9, ">="&I1, A2:A9, "<"&I2)
                  ※ I1=開始日(2026/4/1)、I2=翌月初(2026/5/1)
Excel 2024 で SUMIFS による 2026 年 4 月分の集計が 62000 を返している画面
リテラル日付 (K7) と DATE 連結 (K8) は同じ結果 62000 を返す。
  • 比較演算子 (>=, <) はダブルクォート内に書く
  • セル参照を埋め込むときは ">="&I1 のように、演算子だけを文字列、値を & で連結
  • 「以下 (<=) 月末日」より「未満 (<) 翌月初」の方が安全(月末日 30/31 や時刻付きデータの取りこぼしを防げる)

日付期間集計のさらに詳しい例(時刻付きデータの罠など)は SUMIFS で日付が期間内の合計を求める方法 をご覧ください。

ワイルドカード * ? ― 部分一致の基本

条件文字列にワイルドカードを使うと、部分一致で集計できます。

含む:        =SUMIFS(D2:D9, F2:F9, "*限定*")    →  53500
で始まる:    =SUMIFS(D2:D9, F2:F9, "限定*")
で終わる:    =SUMIFS(D2:D9, F2:F9, "*限定")
  • *0 文字以上の任意文字列にマッチ
  • ?任意の 1 文字にマッチ
  • 文字列内に literal の *? を含めたい場合は ~* ~? でエスケープ(後述の Trap 2 参照)

ワイルドカードのさらに詳しい使い分け(前方/後方/部分一致のパターン、エスケープの罠)は Excel で SUMIFS 関数にワイルドカードを使う方法 をご覧ください。

別シート参照と複数シート集計

SUMIFS は別シートの範囲も参照できます。

固定シート:    =SUMIFS('4月'!D:D, '4月'!B:B, "東京")
INDIRECT 切替:  =SUMIFS(INDIRECT(I1&"!D:D"), INDIRECT(I1&"!B:B"), "東京")
                ※ I1 にシート名を入れて切り替える
  • シート名にスペースや記号(- ! ( など)を含む場合は 'シート名'! のようにシングルクォートで囲む必要がある。日本語のみのシート名(例: =売上!A1=4月!A1)は実機でクォートなしでも通るが、迷う場面では常時クォートを付けても問題ない
  • INDIRECT は揮発性関数。シート数が多いと再計算で重くなるので注意
  • 複数シートの総和は SUMPRODUCT または SUM で各 SUMIFS を加算する

固定参照 / INDIRECT 切替 / 重さ対策の詳細は SUMIFS を別シートにまたがって使う方法、複数シート集計は 複数のシートからのデータ集計:INDIRECT 関数と SUMIFS 関数を使った効率的な方法 をご覧ください。

【Excel 2024 実機】配列条件で SUMIFS がスピルする

Excel 2024 と Microsoft 365 では、SUMIFS の条件に配列を渡すと結果がスピル展開されます。これは古い解説では触れられていない、新しい挙動です。

=SUMIFS(D2:D9, B2:B9, {"東京","大阪","名古屋"})
→ 横スピル: P3=48000, Q3=19000, R3=15500

=SUMIFS(D2:D9, B2:B9, {"東京";"大阪";"名古屋"})
→ 縦スピル: P8=48000, P9=19000, P10=15500

=SUMIFS(D2:D9, B2:B9, UNIQUE(B2:B9))
→ UNIQUE のスピル結果に応じて縦スピル
Excel 2024 で SUMIFS の配列条件が P3:R3 に [48000, 19000, 15500] と横スピル展開している画面
横配列定数で SUMIFS が P3:R3 に [48000, 19000, 15500] をスピル展開。
Excel 2024 で UNIQUE 関数の出力を SUMIFS の条件に渡してスピル連携させている画面
UNIQUE × SUMIFS の連携。=UNIQUE(B2:B9) でユニーク支店を縦スピル、それを =SUMIFS(D2:D9,B2:B9,P14#) に渡すと支店ごとの合計が縦スピルする。

OR 条件が 1 式で書ける

OR 条件で合計したいときは、配列定数を渡して結果を SUM で包むだけです。

OR 集計 (東京 OR 大阪):
  =SUM(SUMIFS(D2:D9, B2:B9, {"東京","大阪"}))     →  67000

従来の SUMPRODUCT 版でも同じ結果:
  =SUMPRODUCT(((B2:B9="東京")+(B2:B9="大阪"))*D2:D9)  →  67000
  • SUMIFS 自体に重複排除はない。{"東京","東京"} を渡すと 96000 になる(倍カウント)
  • スピル先がブロックされていると #スピル!(後述の Trap 4)
  • Excel 2019 以前ではスピル展開できない → 互換性が必要なら従来の SUMPRODUCT で書く
  • SUMIF も同じ要領でスピルする: =SUMIF(B2:B9, {"東京","大阪","名古屋"}, D2:D9)[48000, 19000, 15500] に横スピル。違いは「条件が 1 つしか書けない」だけ

【Excel 2024 で気づきにくい】4 つの罠

ここからが本題です。基本構文は他の Excel 解説サイトでも読めますが、これから紹介する 4 つの罠は、検索しても出てきにくいうえに「気づかないまま誤集計が混入する」厄介な現象ばかりです。すべて Excel 2024 実機で再現した数値とスクリーンショットつきで解説します。

Trap 1: 行数は同じだが起点がずれている → #VALUE! ではなく違う合計が返る

SUMIFS は条件範囲と合計範囲を 「相対位置でペア化」して評価 します。これは「条件範囲の何行目か」と「合計範囲の何行目か」が 位置で対応するという意味です。

そのため、行数(要素数)が同じでも 起点がずれた範囲を渡すと、#VALUE! エラーは出ずに、ペア化された結果として誤った合計が返ります。

数式結果説明
=SUMIFS(D2:D9, B2:B9, "東京")48000正常(合計範囲と条件範囲が同じ起点)
=SUMIFS(D2:D9, B3:B10, "東京")28000条件範囲を 1 行下にずらした → 違う合計
=SUMIFS(D2:D9, B1:B8, "東京")34500条件範囲を 1 行上にずらした(見出し含む)→ 違う合計
Excel 2024 で SUMIFS の起点ずれにより 48000 / 28000 / 34500 という違う合計が返る画面
Trap 1: 同じ「東京の合計」でも、条件範囲の起点をずらすだけで 48000 → 28000 → 34500 と違う数値が返る。

防御策:

  • 範囲を テーブル化 (Ctrl+T) し、構造化参照(売上T[金額], 売上T[支店])で書く。テーブル化するとずれが起こりにくい
  • 列全体指定(D:D, B:B)を使う(パフォーマンスとのトレードオフ)
  • 名前の定義で範囲に名前を付け、ペアで管理する

Trap 2: ワイルドカード * ? の意図せぬ発火

「メモ列に *? を含む文字列があり、それを完全一致で集計したい」というケース。エスケープ(~* ~?)を書き忘れると、ワイルドカードとして発火して別の行にも一致してしまう事故が起こります。

サンプルデータ(F 列にメモ、D 列に金額)の F2:F11 / D2:D11 に対して、? の罠 a と * の罠 b で同じ現象を見ます。

罠 a: ? の未エスケープ(任意 1 文字として発火)

数式(意図: 「通常?A」という文字列だけを集計)結果説明
=SUMIFS(D2:D11, F2:F11, "通常?A")29000? が任意 1 文字 → 通常?A (8000) + 通常XA (7000) + 通常YA (14000) すべてマッチ
=SUMIFS(D2:D11, F2:F11, "通常~?A")8000~? でリテラルエスケープ → 通常?A だけ一致

罠 b: * の未エスケープ(0 文字以上として発火)

数式(意図: 「ぶどう*限定」という文字列だけを集計)結果説明
=SUMIFS(D2:D11, F2:F11, "ぶどう*限定")23000* が 0 文字以上 → ぶどう*限定 (15000) + ぶどう種類限定 (5000) + ぶどう特売限定 (3000)
=SUMIFS(D2:D11, F2:F11, "ぶどう~*限定")15000~* でリテラルエスケープ → ぶどう*限定 だけ一致
Excel 2024 で SUMIFS のワイルドカード未エスケープによる過剰集計の比較画面(29000 vs 8000、23000 vs 15000)
Trap 2: 罠 a (29000 vs 8000) と罠 b (23000 vs 15000)。エスケープの有無で大差が出る。

罠の核心: 検索対象に *? を含む行が 1 つしかないとエスケープあり/なしで同じ結果になり気づきません。データが増えて他の行が紛れ込んだ瞬間に誤集計が発火します。

防御策:

  • 文字列内に * ? を含む可能性があれば常に ~* ~? でエスケープ
  • 関数開発時に「*? を含むデータが来たらどうなるか」を必ずテスト

Trap 3: 値が文字列として保存された数値は SUMIFS で 0 になる

CSV や Web から取り込んだデータでは、見た目は数字でも 値そのものが文字列として保存されていることがよくあります。この状態で SUMIFS の合計対象範囲に渡すと、その分はまったく加算されません

注意したいのは、これは「セル書式」だけの問題ではなく 「値の型」 の問題だという点です。すでに数値が入っているセルに対して後から書式を「文字列(@)」に変えても、値は数値のままなので SUMIFS は普通に加算します(実機検証で 27000 が返ることを確認済み)。罠が発火するのは、値そのものが文字列として保存されている場合だけです。

サンプルでは G 列にあらかじめ NumberFormat="@" を設定したうえで "12000" "8000" などを入力し、値の型が str(文字列)として保存される状態にしています。

数式結果説明
=SUMIFS(G2:G9, B2:B9, "東京")0← ハマる。値が文字列として保存されていると SUMIFS は加算しない
=SUMIF(B2:B9, "東京", G2:G9)0SUMIF でも同じ
=SUM(G2:G9)0SUM ですら 0
=SUMPRODUCT(G2:G9 * 1)82500*1 で数値強制すると加算できる
Excel 2024 で値が文字列として保存された数値範囲を SUMIFS の合計範囲に渡すと 0 が返り、SUMPRODUCT(G2:G9*1) では 82500 が返る画面
Trap 3: G 列は書式 "@" のうえで "12000" などが値ごと文字列として保存されている。SUMIFS / SUMIF / SUM はすべて 0、SUMPRODUCT(G2:G9*1) だけが 82500 を返す。

罠の核心: セルの見た目は同じ「12,000」でも、値が文字列として保存されていると SUMIFS は 0 として扱います。「部分的に欠ける」現象になりやすく、合計値が想定よりちょっと少ないので気づきにくいです。一方、書式が文字列でも値が数値であれば加算されるため、書式だけ見ても判別できません。

防御策:

  1. データクレンジング段階で =VALUE(A1) または値貼り付けで、セル書式を「数値」へ変換
  2. 一括変換: 範囲を選択 → 「データ」タブ → 「区切り位置」 → 完了 で強制再評価(書式が数値になり値も数値化される)
  3. SUMIFS の代わりに SUMPRODUCT(範囲*1) で数値強制する

Trap 4: 配列スピル先がブロックされていると #スピル!

H2-8 で見たように、SUMIFS に配列条件を渡すとスピル展開されます。展開先のセルがブロックされていると、結果セルは #スピル!(英語環境では #SPILL!)になります

例として、S2 にラベル「通常 (ブロックなし)」、S3 に =SUMIFS(D2:D9, B2:B9, {"東京";"大阪";"名古屋"}) を入れた状態を考えます。期待は S3:S5 に [48000, 19000, 15500] が縦スピル展開です。

Excel 2024 で SUMIFS のスピル衝突: 左側はブロックがあって S3 が #スピル!、右側はブロック解除でスピル復活している画面の合成
Trap 4: 左 (ブロック有) = S4 に「ブロック」が入っているため S3 = #スピル!。右 (解除後) = S4 を空にすると S3:S5 にスピル復活し [48000, 19000, 15500]
  • セル表示は日本語環境では #スピル!、英語環境では #SPILL!。VBA や Range.Text で取得すると同様に '#スピル!'(実機検証済 / LanguageID=1041)
  • ブロックを解除(削除)すると、再計算で自動的にスピルが復活する
  • 横配列({...,...,...})と縦配列({...; ...; ...})でブロック方向が異なる

防御策:

  • 配列スピルする数式の展開予定領域を事前にクリアしておく
  • スピルさせたくない場面では =SUM(SUMIFS(...)) で 1 セルに集約してしまう
  • スピル動作が分かっているなら、結果領域を予め空けて運用フォーマットに組み込む

エラー早見表

エラー / 結果原因対処
#VALUE!合計範囲と条件範囲の行数が違う範囲の行数を揃える
#NAME?関数名のスペルミスSUMIFS の綴り確認
#スピル! (英語環境では #SPILL!)配列スピル先のセルがブロックされている展開先をクリア(Trap 4)
結果が 0(1) 完全一致条件で部分一致を期待 (2) 値が文字列として保存された数値 (Trap 3)(1) * ? 追加 (2) 値を数値型に戻す
違う数値が返る行数同じだが起点ずれ (Trap 1) または * ? 未エスケープ (Trap 2)テーブル化 / 列全体指定 / ~* ~?

関連記事

まとめ

SUMIFS は複数条件の合計をシンプルに書ける強力な関数です。基本は =SUMIFS(合計範囲, 条件範囲1, 条件1, ...) で、SUMIF と引数順序が逆になる点だけ注意すれば、すぐに使えます。Excel 2024 では条件に配列を渡すとスピル展開もされ、OR 集計や支店別の合計が 1 式で書けるようになりました。

一方で、本記事で取り上げた 4 つの罠(行数同じ起点ずれ・ワイルドカード未エスケープ・値が文字列として保存された数値・スピル衝突)はどれも検索しにくく、誤集計に気づきにくい厄介な現象です。データが増えた瞬間に発火するパターンも多いので、関数を組み込む前に「*? 含むデータが来たらどうなるか」「文字列として保存された数値が混ざったら?」を必ずチェックすることをおすすめします。

検証環境

  • Excel: Microsoft Excel 2024(永続版)/ バージョン 16.0 / Build 19929.0
  • 言語: 日本語版(UI LanguageID=1041)
  • OS: Windows 11 Pro 25H2
  • 検証日: 2026-04-28

Next Read

このあと読む記事

今の内容に近い記事から、次の1本と補助記事を続けて見つけられるようにしています。

Keep Exploring

このテーマをさらに探す

同じテーマの入口記事と更新記事を、一覧の形でまとめています。

コメント