VLOOKUP関数を部分・一部一致で検索|ワイルドカードとは

ここでは、エクセルのVLOOKUP関数で部分一致(一部一致)の検索ができる数式を解説します。

 

部分一致の検索とはなにか、ワイルドカードとは、部分一致検索の仕方の説明です。

1.部分一致の検索(あいまい検索)とは

始めに、「部分一致の検索(あいまい検索)とはどのようなことか?」を見てみましょう。

 

部分一致検索とは 「特定の文字列を含んだセルを検索すること」を言います。

 

一つ例を見てみます。

上の例は、住所の一覧表です。

 

例えば、住所に「盛岡市」が入った人の氏名を抽出したい時、使うのが「部分一致検索」です。

 

本来、VLOOKUP関数の引数「検索方法」で指定できるのは「完全一致」か「近似一致」です。

 

完全一致は文字通り条件と完全に同じ、近似一致は検索対象が数値の場合に最も近い値を検索します。

 

対して「部分一致」は「部分」、つまり一部のみ一緒であればいいという検索方法で、言い換えれば 「特定の文字列が含まれる」となります。

 

ちなみにこの検索方法は、文字列の前部分の一致を見る「前方一致」や後ろ部分の一致を見る「後方一致」を含めて 「あいまい検索」と呼ばれています。

2.ワイルドカードとは

次に、ワイルドカードとはなにか、そしてその種類を見てみます。

 

ワイルドカードとは 「『*』と『?』という2つの記号のこと」です。

 

エクセルでは、検索の引数にワイルドカードを付けることで、あいまい検索ができます。

 

なお、「*」と「?」は、それぞれ次のような場面で使用します。

種類 使用する場面
 *  文字数を指定しない場合に使用
 ?  文字数を指定する場合に使用

「文字数を指定する」とは、「あいまい検索の条件値の前または後ろに文字数を指定するか?」ということです。

 

例えば、「あ」という言葉を含んでいれば全体的な文字数は関係ない、となれば「*」を使いますし、「あ」の前に1文字あるものだけ、または後ろに2文字あるものだけ、となれば「?」を使います。

 

あいまい検索時には、このどちらかのワイルドカードを使用します。

3.あいまい検索の仕方

あいまい検索は、検索値を 「数式内で直接指定する方法」「セル参照する方法」の2通りがあります。

 

ワイルドカードの付け方が違うので、それぞれみてみましょう。

 

3-1.検索値を数式内で直接指定する

条件値を数式内で直接指定する場合には、それぞれ次のように指定します。

検索したい条件

あいまい検索の

指定方法

引数「検索値」の例

「盛岡市」を含む文字列 「盛岡市」の前後に「*」  "*盛岡市*"
「盛岡市」から始まる文字列 「盛岡市」の後に「*」

 "盛岡市*"

「盛岡市」で終わる文字列 「盛岡市」の前に「*」

 "*盛岡市"

「盛岡市」の前後に何か1文字ずつある文字列

「盛岡市」の前後に「?」

"?盛岡市?"

「盛岡市」の後に何か1文字ある文字列 「盛岡市」の後に「?」

"盛岡市?"

「盛岡市」の前に何か1文字ある文字列 「盛岡市」の前に「?」

"?盛岡市"

例えば、先ほどの表から「盛岡市を含む文字列」を検索したい場合には、次のような数式になります。

【セルF3の数式】

=VLOOKUP("*盛岡市*",B2:C4,2,FALSE)

 

ポイントは、次の通りです。

ポイント
  • ①『含む』と『~から始まる』と『~で終わる』のどれで検索するか?
  • ② 文字数を指定するか?
  • ③ 検索値を「"」で囲む

 

まず①は、どれにするかでワイルドカードの付け方(前後or前のみor後ろのみ)が違ってきます。

 

そして②は、使うワイルドカード(『*』or『?』)が違ってきます。

 

③は、文字列の検索値を数式内で直接指定する場合に必要です。

 

この3点に気を付ければ、数式内で直接検索値を指定して、あいまい検索をすることができます。

 

3-2.検索値をセル参照する

次に、検索値をセルに入力して参照する場合です。

 

例えばセルE3に検索値を入れた場合、数式は次のようになります。

指定したい条件 あいまい検索の指定方法 引数「検索値」の例
セルE3の値を含む文字列 「E3」の前に"*&"、後に"&*"
 "*"&E3&"*"
セルE3の値から始まる文字列 「E3」後に"&*"

 E3&"*"

セルE3の値で終わる文字列 「E3」の前に"*&"  "*"&E3

セルE3の値の前後に何か1文字ずつある文字列

「E3」の前に"?&"、後に"&?"  "?"&E3&"?"
セルE3の値の後に何か1文字ある文字列 「E3」後に"&?"  E3&"?"
セルE3の値の前に何か1文字ある文字列 「E3」の前に"?&"  "?"&E3

例えば、先ほどの表から「盛岡市を含む文字列」を検索したい場合には、次のような数式になります。

【セルF3の数式】

=VLOOKUP("*"&E3&"*",B2:C4,2,FALSE)

 

ポイントは、次の通りです。

ポイント
  • ①『含む』と『~から始まる』と『~で終わる』のどれで検索するか?
  • ②文字数を指定するか?
  • ③検索値のワイルドカードのみを「"」で囲む
  • ④ワイルドカードとセル番号を「&」でつなぐ

 

①と②は、前項と同じです。

 

③は、前項と違って全部を囲ってはダメです。例えば「"*E3*"」だと「E3という文字列を含む」という条件になってしまいます。

 

④は、&がないとエラーになります。

 

この4点に気を付ければ、セルに入力した値を条件に、あいまい検索をすることができます。

4.あいまい検索をする際の注意点

VLOOKUP関数であいまい検索をする際、注意しなければならないことは、「検索値と一致するセルが複数あった場合には、一番上のセルが優先される」点です。

上の表では「盛岡市」が含まれる住所が2つありますが、数式を入れているセルF3に表示されているのは一番上のセルの「田中 花子」さんです。

 

あいまい検索のときだけではありませんが、VLOOKUP関数は「条件に一致したもののうち、一番上のセルが優先される」ということを覚えておきましょう。

 

以上参考になれば幸いです。

 

次にページでは「別シート・別ブックからVLOOKUP関数を使ってデータを抜き出す方法」を解説しています。

⇒ 別シート・別ブックからVLOOKUP関数を使ってデータを抜き出す方法


口コミ・評判のいいExcel本の紹介】


Top