スプレッドシートのSUMIF・COUNTIFが0になる・集計されない原因と解決法9選

スポンサーリンク

スプレッドシートでSUMIFやCOUNTIFを使ったのに「合計が0」「目視では5件あるのに2件しかカウントされない」――そんな経験はありませんか。数式自体は間違っていないように見えるのに結果がおかしい。原因が自分の入力か関数の仕様かわからず、無駄に時間を溶かしてしまいがちです。

この記事では、スプレッドシートでSUMIF・COUNTIFが0になる・正しく集計されない原因を9パターンに整理しました。症状から原因を逆引きできる早見表も用意しています。上から順に読むよりも、自分の症状に近い見出しを探して使ってもらうのがオススメです。

スプレッドシートのSUMIF・COUNTIFが0になるときに最初に確認する3つのこと

原因を探す前に、まず「症状の切り分け」をしましょう。同じ「0になる」でも、原因の絞り込み方が大きく変わります。

  1. 全件が0なのか、一部だけ0なのか:全件0なら数値の型や条件の書き方を、一部だけ0なら個別データの違いを疑います。
  2. データ側に問題があるのか、条件側に問題があるのか=COUNTA(範囲)=COUNT(範囲) の差を見て、文字列セルが混ざっていないか確認します。
  3. 数式自体が動いているか:表示が数式のままなら 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) の値を比べてみてください。差分が文字列セルの数になります。

02 result isnumber check

修正方法

1セルずつなら =VALUE(A2) で数値に変換します。範囲を一括変換するなら別の列に以下のように入力します。

=ARRAYFORMULA(VALUE(A2:A100))

シート全体を一気に直したいときは、メニューの「データ」→「データクリーンアップ」→「数値に変換」も使えます。

原因2:条件側に余分な空白や不可視文字が混ざっている

「りんご」を条件にしたつもりが、データ側のセルが「りんご 」(末尾に半角スペース)だと一致しません。CSVや他システムからの取り込み時に発生しがちです。よく混入するのは、半角スペース・改行コード・NBSP(ノーブレークスペース、CHAR(160))の3種類です。

確認方法

=LEN(A2)

表示上の文字数より大きければ、見えない文字が混ざっています。完全一致を直接確認したいときは =A2="りんご" で TRUE が返るかチェックします。

03 result len hidden chars

修正方法

状況関数
前後・連続する半角スペースを除去=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や予期しない値を返します。正しくは以下です。

04 result operator quote comparison
=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) のような比較条件にもマッチしません。

05 result date isnumber check

修正方法

=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:数値が文字列扱いになっている。VALUETRIMASC で正規化する
  • 原因4〜6:条件の引用符・ワイルドカードエスケープ・範囲サイズの揃え方を見直す
  • 原因7〜9:スプレッドシート特有の日付認識・IMPORTRANGE遅延・ARRAYFORMULA非対応の落とし穴に注意

「合計が0」「カウントが合わない」と気づいた瞬間に、まず =ISNUMBER=LEN で型と長さを確認する習慣をつけると、原因の特定がぐっと早くなります。今回の早見表を手元に置いて、似た症状に出会ったときに逆引きしてみてください。

タイトルとURLをコピーしました