【Excel】ワイルドカードが使える関数と、IF関数を使ったあいまい検索

プロモーションが含まれています

【Excel】ワイルドカードとif関数を使ったあいまい検索

Excelで、ワイルドカードが使える関数、使えない関数の解説とIF関数を使ったあいまい検索の解説。

Excel関連記事

関連記事をもっとみる

ワイルドカードとは

ワイルドカードとは検索などで指定する文字列の指定方法で、あいまい検索にはかかせないものです。

ワイルドカードを使える関数は、決まっています。
下のような文字列をワイルドカードであいまい検索してみます。

  1. excel
  2. E-mail
  3. E-girls

MATCH関数で、ワイルドカードのあいまい検索する

上のように、A1に「excel」、A3に「E-girls」の文字列が入力されているセルに、*(アスタリスク)で検索してみます。
*(アスタリスク)の使い方については、あとで説明します。

MATCH(“e*l”,A1,0) → 1
MATCH(“e*l”,A3,0) → #N/A
このように検索できます。
合致する場合は、番号が返ってきます。
合致するものがない場合は、該当なしのエラーになります。
IF関数を使って検索文字に合致するかだけを調べたいならばこんな感じですね。
IF(ISNA(MATCH(“e*l”,A3,0)),”×”,”〇”)

合致しない場合は#N/Aエラーなので、条件式に値が#N/Aだった場合にTRUEを返す「ISNA関数」を利用し、条件分岐しています。

VLOOKUP関数で、ワイルドカードのあいまい検索する

VLOOKUP関数のあいまい検索でも、上のMATCH関数と同じ文字列を利用していきます。

VLOOKUP(“e*l”,A1,1,0) → excel
VLOOKUP(“e*l”,A3,1,0) → #N/A
このように検索できます。
合致する場合は、指定した列番号の値が返ってきます。
合致するものがない場合は、該当なしのエラーになります。
IF関数を使って検索文字に合致するかだけを調べたいならばこんな感じですね。
IF(ISNA(VLOOKUP(“e*l”,A3,1,0)),”×”,”〇”)

MATCH関数同様、合致しない場合は#N/Aエラーなので、条件式に値が#N/Aだった場合にTRUEを返す「ISNA関数」を利用し、条件分岐しています。

SEARCH関数で、ワイルドカードのあいまい検索する

SEARCH関数のあいまい検索でも、上のVLOOKUP関数と同じ文字列を利用していきます。

SEARCH(“e*l”,A1) → 1
SEARCH(“e*l”,A3) → 1
SEARCH(“e*l”,”E-gir”) → #VALUE
このように検索できます。
合致する場合は、検索文字の出現位置が返ってきます。
合致するものがない場合は、#VALUEエラーになります。
注意が必要なのが、「E-girls」は「l」で終わっていないのにTRUEになる点です。
これは、SEARCH関数の特性で文字列全体から検索してしまうため、「l」で終わっていなくてもTRUEになります。
また、文字の大文字・小文字の区別も行わないので、その点にも注意です。
IF関数を使って検索文字に合致するかだけを調べたいならばこんな感じですね。
IF(ISERROR(SEARCH(“e*l”,A3)),”×”,”〇”)

合致しない場合は#VALUEエラーなので、条件式に値が#VALUEだった場合にTRUEを返す「ISERROR関数」を利用し、条件分岐しています。

FIND関数では、ワイルドカードは使えない

FIND関数は、文字の大文字・小文字の区別して扱い、ワイルドカードに使用する記号も文字として扱ってしまうため、FIND関数では、ワイルドカードを使えません。

上記の3つの中から選びましょう。

COUNTIF関数で、ワイルドカードのあいまい検索する

COUNTIF関数のあいまい検索でも、上のMATCH関数と同じ文字列を利用していきます。

COUNTIF(A1,”e*l”) → 1
COUNTIF(A3,”e*l”) → 0
このように検索できます。
合致する場合は、該当するセルの合計が返ってきます。
合致するものがない場合は、0が返ってきます。
IF関数を使って検索文字に合致するかだけを調べたいならばこんな感じですね。
IF(COUNTIF(A2,”e*l”),”〇”,”×”)

合致しない場合は0なので、そのままIF関数で活かすことができます。

条件分岐する値が、0の場合はFALSEとして、
1以上の場合は、TRUEとして扱われます。

ワイルドカード「*(アスタリスク)」を使う

ようやくワイルドカードの使い方に入ります。

*(アスタリスク)は全ての文字として扱え、何ケタの文字数にも扱ってくれます。
下のリストがあったとして、

  1. excel
  2. E-mail
  3. E-girls

検索文字をe*lとした場合、
これは「e」から始まって、「l」で終わるものを検索するので、1と2が該当します。

例えば検索文字を*el*とした場合、
文字列のどこかに、「el」が含まれるものを検索するので1が該当します。

ワイルドカード「?(半角疑問符)」を使う

?(半角疑問符)は全ての文字として扱ってくれますが、「?」の1つで1文字分としか扱えません。
さっきのリストで、追加して

  1. excel
  2. E-mail
  3. E-girls
  4. CCgirls

検索文字を“??girls”とした場合、
始めから2文字は何でもよくて、残りが「girls」のものを検索するので3と4が該当します。

ワイルドカード「~(半角チルダ)」を使う

~(半角チルダ)は文字列の中に含まれる「*」と「?」を検索するときに使います。
下のリストだと

  1. excel?
  2. E-mail?
  3. E-girls*

検索文字を“*~?*”とした場合、
どこかに「?」を含むものを検索するので1と2が該当します。

このようにワイルドカードを使って絞込すると適切な検索ができますね!
ちなみにワイルドカード動作確認は=COUNTIF(範囲,”検索条件”)とすることで範囲内で検索条件に当てはまるものの数を表示してくれます。

コメント

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