Excel。検索値の文字数が異なってもと合致するデータを手早く検索抽出したい。
<XLOOKUP+LEFT関数+ワイルドカード>
東日本を「EJP」、東京を「TK」というように、検索値が文字列の一部で、しかも文字数が一致していないデータを元に、検索抽出したい場合は、どのようにしたらいいのでしょうか。
例えば、次の表。
C2:C5の地域番号は、ハイフンよりも左側で、地域を区分しています。
ハイフンから左側の文字列と合致する地域名を、A7:B10の表から、検索抽出したいわけです。
VLOOKUP関数でもいいのですが、XLOOKUP関数で数式をつくっていきます。
C2に次のように数式を設定します。
=XLOOKUP(LEFT(B2:B5,2)&"*",A8:A10,B8:B10,"",2,1)
これで、検索値の文字数が異なっても手早く検索抽出することができます。
XLOOKUP関数をつかうことで、オートフィルで数式をコピーしなくても、スピル機能によって、数式がコピー(ゴースト)されますし、絶対参照も不要です。
では、数式を確認してきましょう。
XLOOKUP関数の最初の引数は、「検索値」。
地域番号と合致させるには、ハイフンから左側の文字列が対象になるわけですが、ハイフンから左側の文字数が異なっているため、単純に左から何文字というわけにはいきません。
FIND関数をつかって、ハイフンまでの文字数をカウントして、その数をつかって抽出という方法もありますが、XLOOKUP関数には、一致モードのワイルドカードをつかうことができます。
幸い、「EJ」「WJ」「TK」と左から2文字だけ抽出しても、区分けがつくことがわかります。
そこで、検索値は、左側から指定した文字列を抽出するLEFT関数をつかい設定します。
LEFT(B2:B5,2)&"*"
「&”*”」とワイルドカードを文字結合します。
2つ目の引数は、「検索範囲」。
検索値を元にどこの範囲から検索するのかを設定しますので、
A8:A10
3つ目の引数は、「戻り範囲」。
表示したいデータは、どの列にあるのかを指定しますので、B8:B10。
4つ目の引数は、「見つからない場合」。
今回は、「””(ダブルコーテーション×2)」と空白にするように設定します。
5つ目の引数は、「一致モード」。
完全一致ではなく、ワイルドカードで検索させますので、「2」と設定します。
最後の引数は、「検索モード」。
データも多くないので、通常通り、先頭から後方に向けて検索させますので「1」。
XLOOKUP関数とLEFT関数。そしてワイルドカードを組み合した方法をご紹介しました。