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関数をつかって対応することができない場合、何か他の関数を使えないのか、色々考えてみると、意外な方法が見つかるかもしれませんね。