doodle-on-web

自分で調べたことや、仕事の中で質問されたことなどをまとめています。

エクセルでVLOOKUPによる前方一致、あるいは部分一致検索。

スポンサーリンク

エクセルで前方一致、あるいは部分一致検索などを実行したい場合、 VLOOKUP関数の検索値にワイルドカード(*)を使えば可能です。

状況

『部分一致』あるいは『前方一致』をVLOOKUPで実現したい。

範囲のデータが「あいうえおかきくけこ」で検索値が「あいうえお」まで同じなら合致としたい。 『部分一致』あるいは『前方一致』をVLOOKUPで実現したい。

解決策

VLOOKUP関数にワイルドカードを使えば可能です。

●「前方一致検索」の場合(「あいう」で「あいうえお」がヒット)

検索値の後ろに"*"をつける。

例: =VLOOKUP(B3&"*",$E$2:$F$7,2,0)

●「部分一致検索」の場合(「いうえ」でも「あいうえお」がヒット)

検索値の前後に"*"をつける

例: =VLOOKUP("*"&B3&"*",$E$2:$F$7,2,0)

説明

部分一致に基づいてテーブルから情報を取得するには、ワイルドカードを使用した完全一致モードでVLOOKUP関数を 使用できます。示されている例では、H7の式は次のとおりです。

= VLOOKUP( value &"*" 、 data 、2 、FALSE )

ここで、(H4)およびデータ(B5:E104)は名前付き範囲です。

この数式の仕組み

VLOOKUP関数はワイルドカードをサポートしています。これにより、ルックアップ値の部分一致を実行できます。たとえば、VLOOKUPを使用して、ルックアップ値の一部のみの入力に基づいてテーブルから値を取得できます。VLOOKUPでワイルドカードを使用するには、最後の引数にFALSEまたは0を指定して完全一致モードを指定する必要があります。これはrange_lookupと呼ばれます

この例では、アスタリスク(*)をワイルドカードとして使用します。これは、ゼロ個以上の文字と一致します。H4に入力された値の部分一致を可能にするために、次のようなルックアップ値を提供します。

値&"*"

この式は、アンパサンド(&)を使用して、名前付き範囲の値のテキストをワイルドカードで結合します。名前付き範囲(H4)に「Aya」のような文字列を入力すると、結果は「Aya *」になり、ルックアップ値としてVLOOKUPに直接返されます。ワイルドカードを最後に配置すると、「で始まる」一致になります。これにより、VLOOKUPは「Aya」で始まる列Bの最初のエントリと一致します。

完全な名前を入力する必要がないため、ワイルドカード照合は便利ですが、重複またはほぼ重複しないように注意する必要があります。たとえば、テーブルには「Bailer」と「Bailey」の両方が含まれているため、「Bai」で始まる名前が2つある場合でも、H4に「Bai」と入力すると、最初の一致(「Bailer」)のみが返されます。

タイプの一致を含む

検索文字列がルックアップ値の任意の場所に出現する可能性がある「タイプを含む」一致の場合、次のように2つのワイルドカードを使用する必要があります。

= VLOOKUP("*" &値&"*" 、 data 、2 、FALSE )

これにより、ルックアップ値の両側にアスタリスクが結合され、VLOOKUPはH4に入力さたテキストを含む最初の一致を見つけます。