• ベストアンサー

VLOOKUP関数 、住所、 部分一致 (困っています。至急即応頂けると助かります)

初歩的な質問で申し訳ございません。 御存じの方いらっしゃいましたら、ご教授頂きたく思います。 ただいまVLOOKUP関数を使い、A列の住所に対応するコードを K列・L列の元の表と対応させながら、、B列に振ると言う作業をしております。      A                  B       K        L  1 横浜市港南区○町1-2-1             地区       コード  2 横浜市金沢区△町1-2-3            横浜市緑区    横浜A  3  横浜市都筑区□町4-5-7            横浜市港南区  横浜B                                横浜市金沢区  横浜C                                            A列とK列の値が完全一致(吻合)している場合は、上手くいくのですが、 上記のようにA列は全住所でK列が住所の一部と言うように、両者の値に齟齬  がある場合、検索方法を「TRUE」にしても、 ワイルドカードを使っても、Bに適   確なコードをふることができません。  また複数の関数を駆使し、新たな関数を拵えるほど、エクセルに通暁しておりま せん。  解決法がありましたら、何卒お教え下さい。期限が切迫している状況です。  宜しくお願い申し上げます。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

ワイルドカードの逆引きになるので,綺麗なVLOOKUPでは解決できません。 作成例(但し前方一致の場合):   K列     L列 1 空白     該当無し 2 地区     コード 3 横浜市緑区  横浜A 4 横浜市港南区 横浜B 5 横浜市金沢区 横浜C   A列            B列 1 横浜市港南区○町1-2-1 B1: =INDEX(L:L,MIN(IF(ISERROR(FIND($K$3:$K$5,A1)),"",ROW($K$3:$K$5)))) と記入し,コントロールキーとシフトキーを押しながらEnterで入力する

672276
質問者

お礼

即応頂き、心より深謝申し上げます。無事問題を解決することが出来ました。 有難うございました。

その他の回答 (3)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.4

問題点は即ち 他の方も指摘されているとおり 「検索キーに不要な部分が含まれている」という一事につきないと思います なので要らないものを省けば当然無問題になるのではないでしょうか? 拝見したところK列の検索キーが全て「区」で終わっているようなので =VLOOKUP(MID($A1,1,MIN(FIND($A1,"区"))),$k$2:$l$4,2,0) としてみては如何でしょうか もしK列の検索キーが「区」では必ずしも終わらないのであれば 例えば「市」や「町」、「村」で終わる場合が含まれるのであれば =VLOOKUP(MID($A1,1,MIN(INDEX(FIND($A1,{"市","区","町","村"}),,)))&"*",$k$2:$l$4,2,0) とすればいけるかな? と思います 実際に動作検証をしてないので不安ではあるのですが この解答が御役に立てれば幸いです。

672276
質問者

お礼

即応頂き、心より御礼申し上げます。今後の参考となる案出も頂き、有難うございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! すでに良い回答は出ていますので・・・ 参考程度で目を通してみてください。 配列数式になってしまいますので、この画面からコピー&ペーストする場合は ↓の画像のB2セルに数式を貼り付け後、F2キーを押す、又はB2セルでダブルクリック、又は数式バー内で一度クリックします。 Shift+Ctrl+Enterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 B2セルに =IF(OR(ISNUMBER(FIND($K$2:$K$4,A2))),INDEX($L$2:$L$4,SUMPRODUCT((ISNUMBER(FIND($K$2:$K$4,A2)))*ROW($1:$3))),"") として、Shift+Ctrl+Enterキーです。 これをオートフィルで下へコピーすると画像のような感じになります。 以上、参考になれば幸いです。m(__)m

672276
質問者

お礼

即応頂き、陳謝申し上げます。寡聞な私のために、画像まで添付していただき有難うございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

K列のデータの部分一致でL列の値を検索するなら以下のような関数になります。 =INDEX(L:L,MIN(INDEX((ISERROR(FIND($K$1:$K$100,A2))*1000+ROW($K$1:$K$100)),)))&""

672276
質問者

お礼

即応頂き、有難うございます。即妙な回答有難うございました。