質問: 【excel2007で関数を使用した検索】 初めて質問します。 不慣れな為、不手際もございますが宜しくお願いします。 vlookupのあいまい検索で上手くいかなかったので、お知恵を貸して下さい。 ※画像を確認下さい。 目的は、a列にある店舗の電話番号をリストと照合しb列に記載する事です。 照合先のリストではスペースが入っていたり、「店」や一部文字の抜け等がありvlookupではほとんどがエラーとなりました。 あいまい検索では、全然違う値が返されたりとほぼ使えませんでした。 この様な場合、どの関数をどのように使用すればいいのでしょうか? ※excel勉強中ですが、まだまだ関数の理解に至っておりません。 皆様のお知恵を拝借出来ないでしょうか? 宜しくお願いします。
回答: そもそもvlookupはいわゆる「あいまい検索」はできません。「完全一致」か「近似値」です。近似値とは「なんか似てる」ではなく、検索対象範囲の値が昇順に並んでいる場合にどの値に近いかの判別です。 たとえば a列------b列 あひる----1 あふろ----2 おふろ----3 とあってどこかに「=vlookup("おひる",a1:b3,2,true)」とした場合、文字が一番似ている「あひる」の「1」ではなく、「おひる」の1文字目が「お」なので2列目と3列目の間にあると判断し「2」と表示されます。 それはさておき。 スペースと「店」の有無だけなら、 1.a列の値からsubstitute関数でスペースを削除し、最後の一文字が「店」でなければ「店」を付けたものをvlookupの検索値とする 2.検索対象範囲はスペースがなく「店」が付いている表記で統一する とすれば、ブレを吸収して完全一致で検索できます。 大文字小文字の違いや長音符の有無なども問題になるなら同様に「置換で強制的に表記を一定のルールにそろえる」方法でできます。 ただしそこまでくるとvlookupの中に入れたら数式が長くなりすぎるので、置換した値を置いておく専用列を用意したほうがいいかもしれません。