スプレッドシートでSUMIFやCOUNTIFを使ったのに「合計が0」「目視では5件あるのに2件しかカウントされない」――そんな経験はありませんか。数式自体は間違っていないように見えるのに結果がおかしい。原因が自分の入力か関数の仕様かわからず、無駄に時間を溶かしてしまいがちです。
この記事では、スプレッドシートでSUMIF・COUNTIFが0になる・正しく集計されない原因を9パターンに整理しました。症状から原因を逆引きできる早見表も用意しています。上から順に読むよりも、自分の症状に近い見出しを探して使ってもらうのがオススメです。
スプレッドシートのSUMIF・COUNTIFが0になるときに最初に確認する3つのこと
原因を探す前に、まず「症状の切り分け」をしましょう。同じ「0になる」でも、原因の絞り込み方が大きく変わります。
- 全件が0なのか、一部だけ0なのか:全件0なら数値の型や条件の書き方を、一部だけ0なら個別データの違いを疑います。
- データ側に問題があるのか、条件側に問題があるのか:
=COUNTA(範囲)と=COUNT(範囲)の差を見て、文字列セルが混ざっていないか確認します。 - 数式自体が動いているか:表示が数式のままなら
Ctrl+` で数式表示モードを切り替えます。
まずはこの3点を確認するだけで、原因をかなり絞れます。
NOTE: COUNT は数値セルのみ、COUNTA は空白以外を全部カウントする関数です。「目視で10件あるのに COUNT が3件」なら、残り7件は数値ではなく文字列扱いになっています。
原因1〜3:数値が「文字列」になっているパターン
最も頻出するのが、「数値に見えるけど実は文字列」というケースです。CSVを取り込んだとき・別システムからエクスポートしたとき・コピペで持ってきたときに発生しやすいです。
原因1:合計対象のセルが文字列になっている
セルに 1500 と入っていても、表示位置が左寄せだったら要注意。スプレッドシートでは数値は右寄せがデフォルトです。文字列の数値は SUM でも合計されないので、SUMIF も当然0を返します。
!_images/sumif-countif-zero/01_data_string-vs-number.png
確認方法
=ISNUMBER(A2)
TRUE なら数値、FALSE なら文字列です。範囲全体を一気に確認したいときは、=COUNT(B:B) と =COUNTA(B:B) の値を比べてみてください。差分が文字列セルの数になります。

修正方法
1セルずつなら =VALUE(A2) で数値に変換します。範囲を一括変換するなら別の列に以下のように入力します。
=ARRAYFORMULA(VALUE(A2:A100))
シート全体を一気に直したいときは、メニューの「データ」→「データクリーンアップ」→「数値に変換」も使えます。
原因2:条件側に余分な空白や不可視文字が混ざっている
「りんご」を条件にしたつもりが、データ側のセルが「りんご 」(末尾に半角スペース)だと一致しません。CSVや他システムからの取り込み時に発生しがちです。よく混入するのは、半角スペース・改行コード・NBSP(ノーブレークスペース、CHAR(160))の3種類です。
確認方法
=LEN(A2)
表示上の文字数より大きければ、見えない文字が混ざっています。完全一致を直接確認したいときは =A2="りんご" で TRUE が返るかチェックします。

修正方法
| 状況 | 関数 |
|---|---|
| 前後・連続する半角スペースを除去 | =TRIM(A2) |
| NBSP(Chr(160))を除去 | =SUBSTITUTE(A2, CHAR(160), "") |
| 改行・タブなどの制御文字を除去 | =CLEAN(A2) |
3つを組み合わせる場合は次のようにネストします。一発で正規化できます。
=TRIM(CLEAN(SUBSTITUTE(A2, CHAR(160), "")))
原因3:全角と半角が混在している
「Apple」と「Apple」、「100」と「100」は別物として扱われます。データ側が全角で条件側が半角だったら、当然マッチしません。
修正方法
=ASC(A2)
全角を半角に統一する場合は ASC、逆に半角を全角にしたいときは JIS を使います。比較用の作業列を作り、そこに正規化した値を入れて SUMIF/COUNTIF の対象範囲にすると確実です。
NOTE: 全角半角の不一致は ASC/JIS で対応。前後の空白は TRIM。混同しないように気をつけましょう。
原因4〜6:条件指定のミスで集計されないパターン
数値も文字も正しいのに0になるときは、条件の書き方を見直しましょう。
原因4:比較演算子の引用符を忘れている
>100 のような比較演算子は、必ずダブルクオートで囲む 必要があります。
=SUMIF(A:A, >100, B:B)
これは誤り。スプレッドシートはエラーは出さないものの、条件として正しく認識されず0や予期しない値を返します。正しくは以下です。

=SUMIF(A:A, ">100", B:B)
セル参照と組み合わせる場合は & で連結します。
=SUMIF(A:A, ">"&C1, B:B)
原因5:ワイルドカード(* ?)のエスケープ忘れ
商品コードに や ? が含まれる場合、そのままだとワイルドカードとして解釈されます。たとえば商品コード ABC123 を COUNTIF で数えたいのに、すべての ABC で始まる商品にマッチしてしまいます。
リテラル文字として扱いたいときは、チルダ(~)でエスケープします。
=COUNTIF(A:A, "ABC~*123")
逆に「ABCで始まる全件」を数えたいときはエスケープ不要で "ABC*" です。
原因6:範囲サイズの不一致でズレが起きる
SUMIFは SUMIF(範囲, 条件, 合計範囲) の3引数です。範囲と合計範囲のサイズが違うと、合計範囲を範囲と同じサイズに暗黙的に揃えてしまう ため、想定外のセルが集計対象になり、結果が0や中途半端な値になります。
=SUMIF(A2:A100, ">100", B2:B50)
これは合計範囲が範囲より短いため、実質 B2:B100 として扱われ、空白や別データが混ざる原因になります。両方とも同じ行範囲、または両方とも列全体(A:A, B:B)で揃えるのがオススメです。
原因7〜9:スプレッドシート特有の落とし穴
ここからは Excel と挙動が少し違う、スプレッドシートで特に気をつけたいパターンです。
原因7:日付が「文字列としての日付」になっている
セルに 2026/05/14 と入力しても、表示形式によっては文字列扱いになっているケースがあります。SUMIF/COUNTIF で日付を条件にするには、データ側がシリアル値(日付型)である必要があります。
確認方法
=ISNUMBER(A2)
日付セルに対して FALSE が返ったら文字列です。">="&DATE(2026,1,1) のような比較条件にもマッチしません。

修正方法
=DATEVALUE(A2)
日付文字列をシリアル値に変換します。または「データ」→「列を分割」「形式を変更」→「日付」でも変換可能です。
原因8:IMPORTRANGE経由のデータで0が返る
IMPORTRANGE で別のスプレッドシートから値を取り込んでいる場合、初回読み込みやリロード時に「Loading…」状態になります。値がまだ読み込まれていないタイミングで SUMIF/COUNTIF が評価されると、一時的に0や空が返ることがあります。
また、IMPORTRANGE の結果を直接 SUMIF の範囲に指定すると、配列として展開されないケースもあります。
対処法
- IMPORTRANGE の結果を一度別のシートに値貼り付けしてから SUMIF/COUNTIF で参照する
- IFERROR でラップして「読み込み中」と表示する:
=IFERROR(SUMIF(IMPORTRANGE(...), "条件", IMPORTRANGE(...)), "読み込み中") - 数分待ってリロードし、Loading の解消を待つ
原因9:ARRAYFORMULAと組み合わせて配列展開されない
「複数条件の合計を一気に出したい」と思って ARRAYFORMULA で SUMIF をラップしても、意図通り動かないことが多いです。
=ARRAYFORMULA(SUMIF(A:A, C2:C10, B:B))
これは C2〜C10 の条件ごとに合計を出してくれそうに見えますが、実際には先頭セルだけ評価されたりエラーになったりします。配列対応で条件付き集計を一括で行いたい場合は、SUMPRODUCT や QUERY のほうが安定して動きます。
=SUMPRODUCT((A2:A100=C2)*(B2:B100))
複数条件なら SUMIFS、もっと複雑な集計なら QUERY を検討しましょう。詳しくは スプレッドシートのSUMIFS関数の使い方 も参考にしてください。
症状別 早見表:原因の逆引きチートシート
「どの原因から確認したらいいかわからない」というときは、症状から逆引きしてみてください。
| 症状 | 疑うべき原因 |
|---|---|
| 合計・カウントが全件0 | 原因1(文字列化数値)/ 原因2(空白混入)/ 原因3(全角半角)/ 原因4(条件記法ミス) |
| 一部だけ集計されない | 原因2(特定セルだけ空白)/ 原因3(一部だけ全角)/ 原因7(一部だけ文字列日付) |
| 数値は出るが期待値とズレる | 原因6(範囲サイズ不一致) |
| 日付条件で0になる | 原因7(日付が文字列)/ 原因4(比較演算子の引用符忘れ) |
| 商品コードでヒットしすぎる | 原因5(ワイルドカードのエスケープ忘れ) |
| IMPORTRANGE経由で0が出る | 原因8(読み込み遅延・配列扱い) |
| ARRAYFORMULAで動かない | 原因9(配列対応関数への置換) |
| 数式がそのまま表示される | 数式表示モード(Ctrl+`) |
SUMIF・COUNTIFが0になるのを防ぐためのチェック習慣
一度ハマると地味に時間を食うこの問題、未然に防ぐためのちょっとした習慣を紹介します。
- データ取り込み直後に
=COUNT(範囲)と=COUNTA(範囲)を比べる:差があれば、その分だけ文字列セルが混ざっています。 - 条件側の文字列をいったん
=A1="条件値"で完全一致確認する:空白や全角半角の罠を早期発見できます。 - 比較演算子はダブルクオートで囲むのを習慣化:
><>=<=<>を使うときは反射的に"を打つ癖をつけます。 - IMPORTRANGE経由のデータは別シートに一度貼り付けてから集計:読み込み遅延と配列の問題を一括回避できます。
- 集計範囲のサイズは必ず合わせる:範囲と合計範囲は同じ行数、または両方とも列全体で揃えます。
関連する関数の基本的な使い方は、以下の記事で詳しく解説しています。
まとめ:症状から原因を逆引きして集計ミスをゼロに
スプレッドシートでSUMIF・COUNTIFが0になる原因と対処法を9パターン紹介しました。
- 原因1〜3:数値が文字列扱いになっている。
VALUE、TRIM、ASCで正規化する - 原因4〜6:条件の引用符・ワイルドカードエスケープ・範囲サイズの揃え方を見直す
- 原因7〜9:スプレッドシート特有の日付認識・IMPORTRANGE遅延・ARRAYFORMULA非対応の落とし穴に注意
「合計が0」「カウントが合わない」と気づいた瞬間に、まず =ISNUMBER と =LEN で型と長さを確認する習慣をつけると、原因の特定がぐっと早くなります。今回の早見表を手元に置いて、似た症状に出会ったときに逆引きしてみてください。
