• ベストアンサー

(Excel) VLOOKUPを使った検索で入力文字に近い物を選ばせるには?

EXCELのVLOOKUP関数を使って 短縮記号から会社名を検索できるようにしました。 その逆に会社名から短縮記号を検索するものを作ろうと思ったのですが 会社名が長かったりする為に会社名をデータのものと同じように入力するのが困難なです。 ある程度(名前の最初の数文字など)入力するとそれに近い名前のものを引っ張ってくるようにしたいと考えています。 どういう式になりますか? ちなみに下が作った関数式です。 =IF(ISNA(VLOOKUP(C4,DATA!A2:B39443,2,FALSE)),"",VLOOKUP(C4,DATA!A2:B39443,2)) 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#262398
noname#262398
回答No.4

C4に会社名の最初の数文字を入力、 DATAシートのA列に会社名、B列に短縮記号が入力されているとします。 =IF(COUNTIF(DATA!A2:A39443,C4&"*")>1,"複数あり",IF(COUNTIF(DATA!A2:A39443,C4&"*"),INDEX(DATA!B2:B39443,MATCH(C4&"*",DATA!A2:A39443,)),""))

queen90
質問者

お礼

出来ました!ありがとうございます。

その他の回答 (3)

  • s_yoshi_6
  • ベストアンサー率73% (1113/1519)
回答No.3

例えばPHONETIC関数を使って、読み仮名の一部で検索するという方法ではいかがでしょうか。 手順は次の通りです。 1)「DATA」シートのA列の前に「会社名読み」の列を追加する(短縮記号はB列、会社名はC列になります。なおA列は以下の作業が終わったら、A列選択→右クリック→「表示しない」で非表示にしても構いません)。 2)検索に使うシートを「Sheet1」とし、「検索文字(読み仮名の一部)入力」「短縮記号表示」「会社名表示」のセルを適当に決める(例えばE4、F4、G4)。 3)「DATA」シートのA2を  =LEFT(PHONETIC(C2),LEN(Sheet1!$E$4)) とし、以下コピーとする(カタカナで表示されるので、ひらがなで表示させるために、C列を選択して「書式」メニュー→「ふりがな」→「設定」で、ふりがなの種類を「ひらがな」にします)。 4)「Sheet1」シートのF4、G4にそれぞれ  =IF(ISNA(VLOOKUP(E4,DATA!A2:B39443,2,FALSE)),"",VLOOKUP(E4,DATA!A2:B39443,2,FALSE))  =IF(F4="","",VLOOKUP(F4,DATA!B2:C39443,2)) と入力する。 以上で、「Sheet1」シートのE4に読み仮名の一部を入力すると、それに対応した短縮記号と会社名が表示されるようになります。 会社名(漢字)の一部だと、会社名の頭に(株)(有)などが付いていた場合に検索しづらいので読み仮名検索にしました。入力する検索文字数は、「DATA」シートの会社名読みの文字数が「DATA」シートのE4に入力した文字数に応じて変わりますので、何文字でも構いません。 なお、PHONETIC関数で表示された読みが正しいかどうかはチェックしておく必要があります(入力時に違った読みで入力・変換した場合は正しい読みが表示されません)。

queen90
質問者

お礼

会社名がすべて英語でしたので使えませんでしたが 勉強になりました。ありがとうございました。

noname#204879
noname#204879
回答No.2

「それに近い名前」とは“その文字を含む名前”でOKですか? VLOOKUP関数は複数の名前を取り出すことが出来ないので適切ではないと思います。 [検索条件範囲]にワイルドカードを使用できる[フィルタオプションの設定]が使えそうです。 試してみて分からない点があればお知らせください。 [フィルタオプションの設定]の使い方を理解した上で、上手く行かないことがあれば、どの部分でそうなのかをお知らせください。最初から丸投げはお断りしたいです。

queen90
質問者

お礼

ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

Vlookup関数での第1引数を、普通はA1などにするところを、MID(A1,1,5)などにすれば良いのでは。LEFT(A1,5)でも同じ。5は適当に 。全て固定長5桁にせざるを得ない。ワイルドカード式(*利用)はできない。 逆の索引をするには、検索値の列が左端列にある必要があるので 第2引数のテーブル指定範囲で、A,B、Aのように余分なA列をコピーしておかないといけないように思う。 当初はA、B列を指定し、後者ではB、A列を指定。

queen90
質問者

お礼

ありがとうございました。

関連するQ&A