6/13/2023

Excel。検索値の文字数が異なってもと合致するデータを手早く検索抽出したい。【extract】

Excel。検索値の文字数が異なってもと合致するデータを手早く検索抽出したい。

<XLOOKUP+LEFT関数+ワイルドカード>

東日本を「EJP」、東京を「TK」というように、検索値が文字列の一部で、しかも文字数が一致していないデータを元に、検索抽出したい場合は、どのようにしたらいいのでしょうか。


例えば、次の表。

XLOOKUP関数

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関数。そしてワイルドカードを組み合した方法をご紹介しました。