【Excel】VLOOKUPで「*」や「?」を正しく検索する方法
ExcelでVLOOKUP関数を使って検索をしている時に、
「完全一致のはずなのに、正しく検索できない」ということがあります。
その原因のひとつが「*(アスタリスク)」や「?(クエスチョン)」です。
これらの記号は、Excelではワイルドカードとして扱われるため、見た目通りの検索をすることができません。
ワイルドカードとは、検索時に「任意の文字列」の代わりとして機能する特殊な記号です。
「*」は任意の文字列(0文字以上)の代わり、「?」は任意の1文字の代わりとして機能します。
例えば、「A*」 で検索すると 「A」で始まるすべての文字列が対象になり、
「A?C」 と検索すると 「ABC」「A1C」などが対象になります。
そのため、VLOOKUP関数で「A?C」の行の対象列を検索したいのに、
「ABC」の行の結果が出てきてしまうということが発生します。

そこで使用するのが「~(チルダ)」という記号です。
「~」は、直後の文字をワイルドカードではなく文字として扱うための記号で、
「~*」「~?」と表記することで、「(文字列の)*」「(文字列の)?」と認識されます。
ExcelではSUBSTITUTE関数で文字列の置換ができますので、今回のようなケースですと、
このSUBSTITUTE関数をVLOOKUP関数の検索値にネストして利用するのがおすすめです。
例えば、
=VLOOKUP(SUBSTITUTE(A2,"*","~*"),範囲,列番号,FALSE)
とすると、A2の「*」を「~*」に置き換えてからVLOOKUPで検索するという式になります。
「?」が含まれる場合も同様にSUBSTITUTEで変換できます。
また、「*」と「?」の両方が含まれる可能性がある場合は、SUBSTITUTEを組み合わせて対応できます。

「*」や「?」が含まれてうまく検索できない事象は、
商品コード、型番、管理番号など、データ管理をしていると実際によく起きるケースです。
ワイルドカードとして利用されていない場合は、この方法で回避してみてくださいね。
「完全一致のはずなのに、正しく検索できない」ということがあります。
その原因のひとつが「*(アスタリスク)」や「?(クエスチョン)」です。
これらの記号は、Excelではワイルドカードとして扱われるため、見た目通りの検索をすることができません。
ワイルドカードとは、検索時に「任意の文字列」の代わりとして機能する特殊な記号です。
「*」は任意の文字列(0文字以上)の代わり、「?」は任意の1文字の代わりとして機能します。
例えば、「A*」 で検索すると 「A」で始まるすべての文字列が対象になり、
「A?C」 と検索すると 「ABC」「A1C」などが対象になります。
そのため、VLOOKUP関数で「A?C」の行の対象列を検索したいのに、
「ABC」の行の結果が出てきてしまうということが発生します。

そこで使用するのが「~(チルダ)」という記号です。
「~」は、直後の文字をワイルドカードではなく文字として扱うための記号で、
「~*」「~?」と表記することで、「(文字列の)*」「(文字列の)?」と認識されます。
ExcelではSUBSTITUTE関数で文字列の置換ができますので、今回のようなケースですと、
このSUBSTITUTE関数をVLOOKUP関数の検索値にネストして利用するのがおすすめです。
例えば、
=VLOOKUP(SUBSTITUTE(A2,"*","~*"),範囲,列番号,FALSE)
とすると、A2の「*」を「~*」に置き換えてからVLOOKUPで検索するという式になります。
「?」が含まれる場合も同様にSUBSTITUTEで変換できます。
また、「*」と「?」の両方が含まれる可能性がある場合は、SUBSTITUTEを組み合わせて対応できます。

「*」や「?」が含まれてうまく検索できない事象は、
商品コード、型番、管理番号など、データ管理をしていると実際によく起きるケースです。
ワイルドカードとして利用されていない場合は、この方法で回避してみてくださいね。








