概要
「このIDは一覧の中に“ある”のか“ない”のか?」
「この商品コードは既に登録済み?」
「このメールアドレスは重複していない?」
こういう 「ある値が、一覧の中に存在するかどうか」 を調べたいときに便利なのが
COUNTIF 関数+条件式(>0 / =0) です。
COUNTIF は「条件に合うセルの件数を数える関数」なので、
それが 0 より大きいかどうか を見れば、
- 件数 > 0 → 少なくとも 1 件ある → 「存在する」
- 件数 = 0 → 1 件もない → 「存在しない」
と判定できます。
COUNTIF の基本をおさらい
COUNTIF の書式と意味
COUNTIF の基本形はとてもシンプルです。
=COUNTIF(範囲, 検索条件)
- 範囲:
検索対象となる一覧(商品コード一覧、ID一覧など) - 検索条件:
探したい値(”A001″ や セル参照など)
たとえば、A2:A100 の中に「A001」が何件あるか数えたいなら、
=COUNTIF(A2:A100, "A001")
と書きます。
結果が 0 なら「存在しない」、1 以上なら「存在する」と考えられます。
「存在するか?」を TRUE/FALSE で判定する
COUNTIF の結果が 1 件以上かどうかを見る
A2:A100 に会員IDの一覧があり、
E2 に「調べたいID」が入っているとします。
「E2 のIDが一覧の中に存在するか?」 を TRUE/FALSE で判定したい場合はこう書きます。
=COUNTIF(A2:A100, E2) > 0
- 範囲:A2:A100(ID一覧)
- 検索条件:E2(調べたいID)
- 結果が 1 以上 → TRUE(存在する)
- 結果が 0 → FALSE(存在しない)
COUNTIF 自体は件数を返すので、
それに >0 を付けることで「存在チェック」に変わります。
「存在する/しない」で文字を表示する(IF と組み合わせ)
存在すれば「登録済み」、なければ「未登録」
同じ前提(A2:A100 がID一覧、E2 が調べたいID)で、
「登録済み」か「未登録」かの文字で表示したいときはこうです。
=IF(COUNTIF(A2:A100, E2) > 0, "登録済み", "未登録")
流れをかみ砕くと、
- COUNTIF(A2:A100, E2) で E2 が何件あるか数える
- その結果が 0 より大きければ「登録済み」
- 0 なら「未登録」
という動きです。
存在すれば「重複」、なければ「OK」
例えば、A列が「入力されたメールアドレス一覧」で、
同じアドレスが複数入っていないか確認したいとします。
A2 のアドレスについて、「A2:A100 の中に同じ値が複数あるか」をチェックする式はこうです。
=IF(COUNTIF($A$2:$A$100, A2) > 1, "重複", "OK")
- COUNTIF が 1 なら → その行だけ → 「OK」
- COUNTIF が 2 以上なら → 他にも同じ値がある → 「重複」
という考え方です。
「存在しないときだけ」何かしたい場合
存在しないときだけ「新規」と表示する
A2:A100:既存顧客ID
E2:調べたいID
E2 が一覧に 存在しないときだけ「新規」 と表示したいならこうです。
=IF(COUNTIF(A2:A100, E2) = 0, "新規", "既存")
- COUNTIF=0 → 「新規」
- COUNTIF>0 → 「既存」
存在チェックのときは、
「>0」「=0」どちらで見るかを、目的に応じて使い分けます。
存在しないときだけ VLOOKUP で登録データを参照する(少し応用)
たとえば、
- A2:A100:既存登録ID
- B2:B100:登録済みの名前
- E2:調べたいID
「E2 が未登録なら別シートから名前を拾う」
「既に登録済みなら B 列の名前を表示する」
といった処理も、COUNTIF 判定の応用で書けます。
例(考え方の紹介):
=IF(
COUNTIF($A$2:$A$100, E2) = 0,
"未登録",
"登録済み"
)
ここに VLOOKUP を組み合わせれば、
未登録時に別の処理をさせることもできます。
よくあるパターンのテンプレート
テンプレ1:存在チェックを TRUE / FALSE で返す
=COUNTIF(範囲, 検索値) > 0
例:
=COUNTIF($A$2:$A$100, E2) > 0
テンプレ2:存在すれば「登録済み」/なければ「未登録」
=IF(COUNTIF(範囲, 検索値) > 0, "登録済み", "未登録")
テンプレ3:存在しなければ「新規」/あれば「既存」
=IF(COUNTIF(範囲, 検索値) = 0, "新規", "既存")
テンプレ4:重複チェック(2 件以上あれば「重複」)
=IF(COUNTIF(範囲, 対象セル) > 1, "重複", "OK")
例題
問題1
A2:A100 に会員ID一覧があります。
E2 に入力された会員IDが一覧に「1件でも存在するか」を TRUE/FALSE で判定する式を書いてください。
=COUNTIF(A2:A100, E2) > 0
問題2
問題1と同じ前提で、
E2 の会員IDが一覧に存在すれば「登録済み」、存在しなければ「未登録」と表示する式を書いてください。
=IF(COUNTIF(A2:A100, E2) > 0, "登録済み", "未登録")
問題3
A2:A100 に顧客ID一覧があります。
E2 の顧客IDが一覧に 存在しないときだけ「新規」、
存在する場合は「既存」と表示する式を書いてください。
=IF(COUNTIF(A2:A100, E2) = 0, "新規", "既存")
問題4
A2:A100 にメールアドレス一覧が入っています。
各行のアドレスについて、同じアドレスが 2 件以上あれば「重複」、1 件だけなら「OK」 と表示する式(A2 に入れる式)を書いてください。
=IF(COUNTIF($A$2:$A$100, A2) > 1, "重複", "OK")
問題5
A2:A100 に商品コード一覧があります。
F2 の商品コードが一覧に存在する場合 TRUE、存在しない場合 FALSE を返す式を書いてください。
=COUNTIF(A2:A100, F2) > 0
まとめ
「値が存在するか判定 → COUNTIF」は、
- まず COUNTIF で「その値が何件あるか」数える
- 結果が
>0か=0かで存在/非存在を判定する
という とてもシンプルな型です。
基本形はこれだけ覚えておけば十分です。
=COUNTIF(範囲, 検索値) > 0 ' 存在チェック(TRUE/FALSE)
=IF(COUNTIF(範囲, 検索値) > 0, "存在するとき", "存在しないとき")
これを ID、商品コード、メールアドレスなどにそのまま当てはめれば、
「登録済みか?」「重複していないか?」を Excel に瞬時に判定させることができます。
