2/02/2022

Excel。検索する値の一部だけ含む表から該当するデータを抽出したい。【Part of the data】

Excel。検索する値の一部だけ含む表から該当するデータを抽出したい。

<LOOKUP+FIND関数>

VLOOKUP関数は、とても使い勝手がいい関数なので、アチラコチラで使用されているのですが、対応できないケースというのも、結構あります。


例えば、次のような場合です。


やりたいことは、B3の担当者を、住所から判断して、その地域を担当している担当者名をB6:B8の中から抽出したいわけです。


簡単に言えば、神奈川県厚木市にお住いのお客様の担当は、誰なんだということ。


この程度の表ならば、目視で解決しますが、データ量が増えれば目視でというわけにもいきません。


VLOOKUP関数を使えば、抽出できるように思えますが、VLOOKUP関数では対応できません。


理由は、VLOOKUP関数の検索値です。

今回の検索値は、「神奈川県厚木市東町」とすると、範囲に該当するデータの地区には、「神奈川県厚木市東町」というデータはありません。

一致しませんから、検索方法の完全一致では対応できませんし、近似値で対応できるわけでもありません。


つまり、検索値と範囲の検索値が同じ、あるいは、数値の近似値でなければVLOOKUP関数をつかうことができないのです。


このようなケースの場合は、LOOKUP関数をアレンジしてつかうことで解決することができます。


B3に次の数式を設定してみましょう。

=LOOKUP(1,0/FIND(A6:A8,B2),B6:B8)


正しくデータを抽出することができました。


設定した数式を確認しておきましょう。


FIND(A6:A8,B2) は何をしているのかというと、A6~A8のそれぞれのデータにB2の文字と合致するものが、何文字目にあるのかを算出することができます。


今回の場合、A6とA8は含まれていないので、「#VALUE」となり、A7は、1文字目にあるので1と算出されます。


常に1というケースならば、0で除算しなくてもいいのですが、5文字目に見つかった場合にも対応したいので、除算します。


該当するデータのみが「0」、それ以外はエラーとすることができます。


そして、LOOKUP関数をつかい、検索値を1に指定して、「0」と同じ番目にある担当者名を抽出することができます。


今回のケースのように、VLOOKUP関数をつかって対応することができない場合、何か他の関数を使えないのか、色々考えてみると、意外な方法が見つかるかもしれませんね。