Excel関数 逆引き集 | 値が存在するか判定 → COUNTIF

Excel VBA Excel
スポンサーリンク

概要

「この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, "登録済み", "未登録")

流れをかみ砕くと、

  1. COUNTIF(A2:A100, E2) で E2 が何件あるか数える
  2. その結果が 0 より大きければ「登録済み」
  3. 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」は、

  1. まず COUNTIF で「その値が何件あるか」数える
  2. 結果が >0=0 かで存在/非存在を判定する

という とてもシンプルな型です。

基本形はこれだけ覚えておけば十分です。

=COUNTIF(範囲, 検索値) > 0   ' 存在チェック(TRUE/FALSE)
=IF(COUNTIF(範囲, 検索値) > 0, "存在するとき", "存在しないとき")

これを ID、商品コード、メールアドレスなどにそのまま当てはめれば、
「登録済みか?」「重複していないか?」を Excel に瞬時に判定させることができます。

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