人事総務にいたころ、有給申請の承認件数をCOUNTIF関数で集計したら、勤怠システム側の数字と合わなかったことがあります。
システム上の「承認済み」は38件。ところが=COUNTIF(範囲, "承認済み")で数えると35件しか出てきません。3件足りない。数式を何度見直しても間違いは見当たらず、原因を探すのに15分かかりました。結局、CSVでシステムから書き出したデータのうち3件だけ、末尾に見えない改行のようなスペースが混ざっていたことが原因でした。手入力ではなく、システム側の出力だから大丈夫だろうという思い込みが、原因を見つけるまでの時間を長引かせていました。
COUNTIF関数は、条件に一致するセルの個数を数える、SUM関数と並んで実務でよく使う関数です。書き方自体で迷うことは少ない一方、「数式は合っているはずなのに件数が合わない」という違和感には、たいてい決まったパターンがあります。今回は基本の書き方から実務でよく使う型、そして「COUNTIFの結果が信用できない」と思ったときに最初に見るべき場所まで、順番に整理していきます。
COUNTIF関数の基本
COUNTIF関数は、指定した範囲の中で条件に一致するセルの個数を数える関数です。
=COUNTIF(範囲, 検索条件)
- 範囲:数えたいセル範囲
- 検索条件:数える対象を絞り込む条件
A1からA20の範囲にある「完了」という文字列の件数を数えたい場合は、次のように書きます。
=COUNTIF(A1:A20, "完了")
条件に文字列を指定する場合はダブルクォーテーションで囲み、数値をそのまま条件にする場合はクォーテーションは不要です。まずはこの型を覚えておけば、あとは条件の書き方のバリエーションを知るだけで、実務の大半の集計に対応できます。
実務でよく使う型
選択肢ごとの件数を数える
=COUNTIF(B2:B100, "満足")
アンケートなど選択式の項目で、各選択肢が何件あったかを数える定番の使い方です。
重複データを見つける
=COUNTIF(C2:C500, C2)
C2と同じ値がC列全体に何件あるかを数えます。結果が2以上のセルは重複している可能性があります。全行にコピーしてフィルターで2以上だけ絞り込めば、重複データの洗い出しに使えます。
数値条件で絞り込む
=COUNTIF(D2:D50, ">=80")
比較演算子を使う場合は、演算子と数値をまとめてダブルクォーテーションで囲みます。
ワイルドカードで部分一致を数える
=COUNTIF(E2:E200, "*東京*")
アスタリスク(*)は任意の文字列を表すワイルドカードです。「東京都渋谷区」「東京都新宿区」のように表記が違っても、「東京」を含むセルをまとめて数えられます。
未入力の行を確認する
=COUNTIF(F2:F100, "")
進捗管理表で「まだ入力されていない行」を確認する使い方です。件数がゼロになれば全件入力完了とひと目でわかり、日々の進捗チェックに組み込んでおくと入力漏れに早く気づけます。
OR条件を1本の数式で処理する
「東京」か「大阪」のどちらかを含むセルを数えたい、という場面では、条件を配列で渡してSUM関数で包む書き方が使えます。
=SUM(COUNTIF(E2:E200, {"*東京*","*大阪*"}))
{}の中に条件をカンマ区切りで並べると、それぞれの条件でCOUNTIFを計算した結果をSUM関数が合計してくれます。COUNTIFS関数はAND条件(かつ)が得意な一方、OR条件(または)を1本で済ませたいときは、こちらのほうがシンプルになることがあります。
条件付き書式と組み合わせて重複を目立たせる
COUNTIF関数は、セルを数えるだけでなく、条件付き書式のルールとしてもよく使われます。「セルの値を含む数式」として次のような数式を条件付き書式に設定しておくと、重複しているセルに自動で色がつくようになります。
=COUNTIF($C$2:$C$500, C2)>1
先ほど紹介した重複チェックの数式を、別のセルに結果を表示するのではなく、表そのものの上で視覚的に確認したいときに便利な応用です。有給申請のような一覧表でも、同じ日付・同じ社員番号の行が重複して入力されていないかを、目視ではなく色でひと目でわかるようにしておくと、集計前のチェック作業がかなり楽になります。実際、勤怠データのような他部署からもらうファイルでは、同じ行がコピーミスで2回入っていることも珍しくなく、この条件付き書式を先に仕込んでおくだけで、COUNTIFの結果がズレる前に気づけることが多いです。
期間で件数を絞り込む(COUNTIFを2本組み合わせる)
=COUNTIF(G2:G100,">="&DATE(2026,9,1))-COUNTIF(G2:G100,">="&DATE(2026,10,1))
「9月中の日付だけを数えたい」というときの書き方です。「9月1日以降」の件数から「10月1日以降」の件数を引くことで、結果的に9月1日〜9月30日だけの件数が求められます。条件を2つ指定できるCOUNTIFS関数を使えば1本の数式でも書けますが、COUNTIFの引き算だけで完結させたい場面や、COUNTIFS関数がまだ馴染みのない段階でも扱いやすい書き方として覚えておくと便利です。
「COUNTIFの結果が信用できない」と思ったら、最初に見る場所
冒頭の有給申請の話のように、COUNTIFの件数がズレたとき、真っ先に数式そのものを疑いたくなりますが、実務での経験上、原因の8割以上はデータ側にあります。次の順番で確認すると、原因を見つけるまでの時間を大きく短縮できます。
- 対象セルを実際にクリックして数式バーを見る:見た目は同じでも、末尾に半角スペースが紛れていないか確認します。特にシステムからの自動出力やコピー&ペーストで持ってきたデータは要注意です。冒頭の有給申請の例では、まさにこの手順で3件のうち1件目の原因が見つかりました。
- 全角・半角が統一されているか確認する:「1」と「1」、「A」と「A」のように、見た目がそっくりでも別の文字として扱われます。他部署から共有されたデータで特によく起きます。ステータス欄が手入力とシステム出力の混在になっている表では、この混在が起きやすい傾向があります。
- 数値と文字列が混在していないか確認する:数値条件で数えているのに、セルが文字列として入力されている行はカウントから外れます。セルの左揃え・右揃えを見ると簡易的に判別でき、数値は自動で右揃え、文字列は左揃えになる点が目印になります。
- 条件式に余分な記号が入っていないか確認する:「=”80″」のように等号を余分に書いてしまうと正しく動作しないことがあります。完全一致であれば等号なしでそのまま値を指定します。等号が必要になるのは、セルが完全に空白かどうかを判定する「=””」のような特殊なケースに限られます。
- 条件を1つの数式に詰め込みすぎていないか確認する:「東京都かつ満足」のように条件が2つ以上になる場合は、COUNTIFではなくCOUNTIFS関数に切り替えるのが正しい対処法です。無理に1つの数式で済ませようとすると、条件の書き方がどんどん複雑になり、後から見直す人が読めなくなります。
- 参照範囲が広すぎないか確認する:A:Aのように列全体を指定していると、表の下の方にあるメモや別の集計式まで条件に一致してカウントされてしまうことがあります。
このうち1番と2番は、体感として実務トラブルの半分以上を占めています。見えないスペースの除去にはTRIM関数、全角半角の統一にはASC関数が有効です。それぞれの具体的な直し方は、スペース混入が原因で数字がズレるケースと全角と半角が混ざっているときの見分け方でSUM関数の例を使って詳しく解説しているので、COUNTIFで同じ症状が出たときにもあわせて参考にしてみてください。


6番の参照範囲についても補足しておくと、「後からデータが増えても対応できるように」と範囲を広めに取ること自体は悪くありません。ただし、集計対象の表とメモ・別の計算式が同じシートに混在していると、範囲を広げた分だけ事故のリスクも増えます。集計対象とそれ以外は別シートに分けておくか、テーブル機能を使って範囲を自動拡張させておくと、手動で範囲を書き換える手間も含めて解消できます。
付け加えると、この6項目は上から順に確認する必要はなく、自分の集計対象データの性質に合わせて優先順位を入れ替えて構いません。たとえば他部署からExcelファイルをもらって集計する場合は1番と2番を先に、社内システムから自動出力されたCSVを扱う場合はシステム側の出力仕様(末尾に改行コードが付くかどうかなど)をあらかじめ確認しておくと、同じ原因で何度もつまずくことを防げます。一度原因のパターンを見つけたら、次回以降は同じチェックを機械的に繰り返すだけで済むようになるので、最初の1回で原因の切り分け方を覚えてしまうのが一番の近道です。
COUNT関数・COUNTA関数との違い
COUNTIF関数と混同しやすい関数に、COUNT関数とCOUNTA関数があります。
- COUNT関数:範囲内の「数値が入っているセル」の個数を数えます。条件は指定できません。
- COUNTA関数:範囲内の「何かしらのデータが入っているセル」の個数を数えます。文字列・数値どちらもカウント対象です。条件は指定できません。
- COUNTIF関数:範囲内の「指定した条件に一致するセル」の個数を数えます。
「回答済みの行が何件あるか」を数えたいだけであれば、条件を指定できるCOUNTIFよりも、シンプルにCOUNTAを使ったほうが数式がすっきりします。逆に「特定の選択肢を選んだ件数」のように内容を絞り込みたい場合はCOUNTIFが向いています。目的に応じて使い分けられるようになると、無駄に複雑な数式を書かずに済みます。
条件が2つ以上になったら、COUNTIFS関数へ
COUNTIF関数は条件を1つしか扱えないため、複数の条件を同時に満たすセルを数えたい場合はCOUNTIFS関数を使います。書き方はCOUNTIFとよく似ていますが、「範囲と条件のペア」を複数並べて指定できる点が異なります。ペアの数が増えるほど、範囲同士の行数がずれていないかの確認が重要になり、これがCOUNTIFSならではのつまずきポイントにもなります。
COUNTIFSの詳しい使い方や、条件範囲がズレてしまう典型的なミスについては、COUNTIFS関数の使い方をわかりやすく解説|複数条件で数が合わないときの確認ポイントで詳しく取り上げていますので、複数条件で数えたい方はあわせて確認してみてください。

よくある質問
Q. COUNTIF関数で空白セルの件数を数えるにはどうすればいいですか?
=COUNTIF(範囲, "")と書くことで、完全に空白のセルの件数を数えられます。ただし、見た目は空白でも数式の結果として空の文字列が入っているセルは、この条件でカウントされる場合とされない場合があるため、心配な場合はCOUNTBLANK関数もあわせて確認することをおすすめします。
Q. COUNTIFの検索条件に、別のセルの値を使うことはできますか?
できます。=COUNTIF(範囲, F1)のようにセル参照を条件にすると、F1セルの値を変えるだけで集計結果が自動的に切り替わる、柔軟な集計表を作れます。条件を頻繁に変えて確認したい場面では、セル参照を使う方法がおすすめです。
Q. 大文字と小文字は区別されますか?
COUNTIF関数は基本的にアルファベットの大文字・小文字を区別せずに一致を判定します。「Tokyo」と「tokyo」は同じものとしてカウントされる点は、他の多くのExcel関数と共通する挙動です。
Q. 「以上」と「より大きい」の書き方を間違えやすいのですが、どう覚えればいいですか?
「>=」は「以上」(その数値を含む)、「>」は「より大きい」(その数値を含まない)と覚えておくと整理しやすいです。境界値をどちらに含めるかは業務のルール次第なので、条件を書く前に「ちょうどその数値の場合はカウントに含めるかどうか」を確認しておくと、後から数え直す手間を防げます。
Q. COUNTIFで数えた結果が0件になってしまいます。原因は何が考えられますか?
条件の書き方自体は合っているのに0件が返ってくる場合、範囲の指定ミス(別シートを見ている、範囲がずれている)か、条件に指定した文字列が対象セルと完全に一致していない(前後にスペースがある、全角半角が違う)かのどちらかであることがほとんどです。まずは範囲の左上と右下のセルを実際にクリックして、想定しているシート・想定している列を見ているかを確認すると、原因の切り分けが早くなります。
まとめ
COUNTIF関数は書き方自体はシンプルですが、「数えたはずなのに数が合わない」というトラブルの多くは、関数の書き方ではなく元データの表記ゆれに原因があります。
- 対象セルを実際にクリックして中身を確認する
- 全角・半角、見えないスペースの混入を疑う
- 数値と文字列が混在していないか確認する
- OR条件は
SUM(COUNTIF(...))、AND条件はCOUNTIFSと使い分ける - 条件が2つ以上になったらCOUNTIFS関数に切り替える
冒頭の有給申請の3件も、数式自体は最初から正しく書けていました。ズレていたのは数式ではなく、システムから書き出されたデータのほうです。「数式は合っているはずなのに結果がおかしい」という状況に出会ったら、まずCOUNTIF関数そのものを疑う前に、数える対象のセルを実際にクリックして、中身が本当に想定通りの値になっているかを目で確認してみてください。関数のミスよりも、元データの表記ゆれが原因になっているケースのほうが、実務では圧倒的に多いというのが実感です。焦らず、一つずつ確認していきましょう。
もう少し複雑な集計トラブルの実例や、複数記事をまたいだチェックリストのような、ブログ本文だけでは扱いきれない踏み込んだ内容は、もう一歩踏み込みたい人向けの実例集としてnote側でまとめています。気になる方はあわせてご覧ください。


コメント