COUNTIF関数は、範囲の中で条件に合うセルの個数を数える関数です。引数は範囲と条件の2つだけ。つまずくのはほぼ「条件の書き方」で、>=100 のような比較演算子やセル参照を使うときに書式が変わります。
この記事でわかること
- COUNTIF関数の条件の書き方6パターン(数値・文字列・比較・セル参照・部分一致・空欄)
- 重複チェックと、重複した項目に連番を振る書き方
- 複数条件で数えるCOUNTIFS関数と、日付で期間を区切る方法
- COUNT・COUNTA・COUNTBLANKとの違い
- 0件になる/数が合わないときの原因と直し方
COUNTIF関数の構文と条件の書き方
構文
=COUNTIF(範囲, 検索条件)
| 引数 | 指定するもの |
|---|---|
| 範囲 | 数える対象のセル範囲 |
| 検索条件 | どんなセルを数えるかの条件 |
条件の書き方6パターン
| やりたいこと | 書き方 | 例 |
|---|---|---|
| 特定の値と一致 | そのまま書く | =COUNTIF(A2:A100, "東京") |
| 数値と一致 | 引用符は不要 | =COUNTIF(B2:B100, 100) |
| 〇以上・〇未満 | 演算子ごと " で囲む | =COUNTIF(B2:B100, ">=100") |
| セルの値を条件に | セル参照をそのまま | =COUNTIF(A2:A100, D2) |
| セルの値と演算子を組む | "演算子"&セル | =COUNTIF(B2:B100, ">="&D2) |
| 〇〇を含む(部分一致) | * で挟む | =COUNTIF(A2:A100, "*東京*") |
引っかかりやすいのは5番目です。">=D2" と書くと「D2という文字列以上」という意味になって数えられません。演算子だけを引用符に入れ、& でセル参照をつなぎます。
ワイルドカードの3記号
| 記号 | 意味 | 例 |
|---|---|---|
* | 任意の文字列(0文字以上) | "東京*" =東京で始まる |
? | 任意の1文字 | "A?01" =A、任意の1文字、01 |
~ | 直後の記号を文字として扱う | "~*" =アスタリスクそのもの |

基本の使い方
A列に都道府県、B列に金額が入った100行の表を例にします。
=COUNTIF($A$2:$A$100, "東京")
A列の中で「東京」と完全に一致するセルの数を返します。大文字と小文字は区別されませんが、全角と半角は別の文字として扱われます。
金額が10万円以上の件数なら、次の式です。
=COUNTIF($B$2:$B$100, ">=100000")
範囲は絶対参照にする
集計表を作って下へコピーする場合、範囲は $A$2:$A$100 のように固定します。固定しないと範囲が1行ずつずれ、下の行ほど件数が減っていきます。F4キーで切り替えられます。
条件のほうは固定しません。条件欄のセルを参照する形にすれば、都道府県ごとの件数を一気に出せます。
=COUNTIF($A$2:$A$100, D2)
実務でよく使う4パターン
① 重複しているかを調べる
同じ値が2件以上あるかを判定します。
=COUNTIF($A$2:$A$100, A2)>1
TRUE になった行が重複です。この式をそのまま条件付き書式のルールに入れれば、重複行に色を付けられます。
② 重複した項目に連番を振る
範囲の始点だけを固定するのが要点です。
=COUNTIF($A$2:A2, A2)
下へコピーすると範囲が $A$2:A3、$A$2:A4 と伸びていくため、同じ値の1件目は 1、2件目は 2 と連番になります。始点だけ固定する書き方は、累計や通し番号を作るときにも同じ形で使えます。
この連番と元の値をつなげば、VLOOKUP関数で「2件目だけを引く」といった処理もできます。
③ 複数条件で数える(COUNTIFS)
条件が2つ以上ならCOUNTIFS関数です。範囲と条件をセットで並べます。
=COUNTIFS($A$2:$A$100, "東京", $B$2:$B$100, ">=100000")
⚠️ すべての範囲は同じ行数でなければなりません。$A$2:$A$100 と $B$2:$B$50 のように長さが違うと #VALUE! になります。
④ 期間で区切って数える
同じ列を2回指定して、開始日と終了日ではさみます。
=COUNTIFS($A$2:$A$100, ">="&DATE(2026,4,1), $A$2:$A$100, "<="&DATE(2026,4,30))
日付を ">=2026/4/1" と直接書くと環境によって解釈が変わるため、DATE関数か日付セルの参照で指定するほうが確実です。

COUNT系5つの関数の違い
名前が似た関数が5つあり、数える対象が違います。
| 関数 | 数えるもの | 対応 |
|---|---|---|
| COUNT | 数値が入ったセル | 2016〜 |
| COUNTA | 空欄でないセル(文字列も含む) | 2016〜 |
| COUNTBLANK | 空欄のセル | 2016〜 |
| COUNTIF | 1つの条件に合うセル | 2016〜 |
| COUNTIFS | 複数の条件すべてに合うセル | 2016〜 |
⚠️ 数式が "" を返しているセルの扱いが分かれます。見た目は空でも、COUNTAは「データあり」として数え、COUNTBLANKは「空欄」として数えます。両方の結果が食い違ったら、その列に "" を返す数式が入っているサインです。

うまくいかないときの原因と直し方
| 症状 | 原因 | 直し方 |
|---|---|---|
| 0件になる | 演算子とセル参照のつなぎ方が違う | ">="&D2 の形に直す |
| 0件になる(文字列) | 前後に空白がある/全角半角の混在 | TRIM・ASCで確認して整える |
| 数が合わない | 数値が文字列として入っている | 元データを数値に直す(左寄せなら文字列) |
#VALUE!(COUNTIFS) | 範囲の行数がそろっていない | すべての範囲を同じ行数にする |
#VALUE!(別ブック参照) | 参照先のブックが閉じている | ブックを開く。またはSUMPRODUCTで書き換える |
| 下の行ほど件数が減る | 範囲が相対参照のままコピーされた | $A$2:$A$100 に固定する |
| 再計算が重い | 範囲に列全体を指定している | $A$2:$A$5000 のように行数を区切る |
16桁以上の番号が正しく数えられない
COUNTIFは、数字だけの文字列を数値として比較します。Excelが数値として保持できる有効桁数は15桁なので、16桁以上の番号は先頭15桁が同じだと同一とみなされるという挙動になります。会員番号やカード番号の重複チェックで実際に問題になります。
回避するには、条件の末尾にワイルドカードを付けて文字列としての比較を強制します。
=COUNTIF($A$2:$A$100, A2&"*")
大文字と小文字を区別して数える
COUNTIFは ABC と abc を同じ値として数えます。区別したい場合はEXACT関数を組み合わせます。
=SUMPRODUCT(--EXACT($A$2:$A$100, D2))
EXACTが大文字小文字を区別して TRUE/FALSE を返し、-- で数値に変換してから合計する形です。
複数の値のいずれかを数える
COUNTIFは「または」の条件を直接書けません。条件を波かっこで並べ、結果を合計します。
=SUM(COUNTIF($A$2:$A$100, {"東京","大阪","名古屋"}))

似た関数との使い分け
| やりたいこと | 使う関数 | 対応バージョン |
|---|---|---|
| 条件に合う件数 | COUNTIF・COUNTIFS | 2016〜 |
| 条件に合う金額の合計 | SUMIF・SUMIFS | 2016〜 |
| 条件に合う行を取り出す | FILTER | 2021〜 |
| 重複を除いた種類の数 | UNIQUE+COUNTA | 2021〜 |
| 掛け算しながら条件集計 | SUMPRODUCT | 2016〜 |
| 軸を変えながら件数を見る | ピボットテーブル | 2016〜 |
数えるのがCOUNTIF、足すのがSUMIF、取り出すのがFILTERと役割が分かれています。
重複を除いた種類の数は、Excel 2021以降ならUNIQUE関数が最短です。
=COUNTA(UNIQUE($A$2:$A$100))
2019以前の環境では、COUNTIFを使った次の形が使えます。ただし範囲に空白セルがあると #DIV/0! になるため、範囲は実データの行数ぴったりに指定します。
=SUMPRODUCT(1/COUNTIF($A$2:$A$100, $A$2:$A$100))
集計軸を何度も変えるならピボットテーブルのほうが速く、式の保守も要りません。件数を決まった位置のセルに出したい場合だけCOUNTIFを選ぶ、という分け方が扱いやすくなります。
よくある質問
Q1:条件に「〇〇以外」を指定できますか?
できます。=COUNTIF($A$2:$A$100, "<>東京") と書きます。<> が「等しくない」を表す演算子です。
Q2:色が付いたセルの数を数えられますか?
COUNTIFでは数えられません。COUNTIFが見ているのはセルの値だけで、書式は判定できないためです。色分けの基準になっている値(ステータス列など)を条件にして数えてください。
Q3:セルの値を含むかどうかで数えたいのですが。
条件にセル参照を使う場合も、ワイルドカードは文字列として & でつなぎます。
=COUNTIF($A$2:$A$100, "*"&D2&"*")
Q4:空欄の数を数えるにはどう書きますか?
COUNTBLANK関数が確実です。COUNTIFで "" を条件にすると、空欄と「空文字列を返す数式」の扱いが分かれて結果が食い違うことがあります。
Q5:別のシートの範囲を数えられますか?
数えられます。=COUNTIF(データ!$A$2:$A$100, "東京") のようにシート名と ! を付けて指定します。別のブックを参照する場合は、そのブックを開いていないと #VALUE! になる点に注意してください。
まとめ
- 引数は範囲と検索条件の2つ。つまずくのはほぼ条件の書き方
- 比較演算子は
"の中、セル参照は">="&D2と外で&つなぎ - 重複チェックは
>1、連番は始点だけ固定した$A$2:A2 - 複数条件はCOUNTIFS。すべての範囲を同じ行数にそろえる
- 0件になったら「空白・全角半角・型」の3点を先に確認する
※関数の対応バージョンはExcelの一般提供時点の情報にもとづいています。お使いの環境や更新プログラムの適用状況により、利用できる関数や表示が異なる場合があります。
あわせて読みたい

