- ベストアンサー
Excelデータを部分一致で抽出して表示する方法
- Excelの関数(lookup か vlookup)かVBAを利用して、Sheet2のセルA列に部分一致したデータを表示する方法について説明します。
- Sheet1のセルBとSheet2のセルBを比較し、部分一致した場合にSheet2のセルAに該当データ(Sheet1のセルA)を表示します。
- 例えば、Sheet2のセルB1が「静岡県」の場合は、Sheet2のセルA1に「営業2部」というデータを表示します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3の最後の部分を訂正です。 >となっていると、5行目の「神奈川」を探し出し「流通1部」が返ることになります。 正しくは、探し出せずに何も返らない、です、失礼しました。
その他の回答 (3)
- cistronezk
- ベストアンサー率38% (120/309)
>1つ付け加え忘れたのですが、Sheet2のセルBのデータによっては >「横浜市~」から始まるものもあるため、(以下略) この場合、参照元のSheet1には、 ___|___セルA___|________セルB ・・・ ---------------------------- 9 | 営業5部 | 横浜市 ---------------------------- ・・・ というようなデータがあるのでしょうか?もしなくて ---------------------------- 9 | 営業5部 | 神奈川県横浜市 ---------------------------- となっていると、5行目の「神奈川」を探し出し「流通1部」が返ることになります。その点は注意された方がいいでしょう。
- _Kyle
- ベストアンサー率78% (109/139)
#1です。 >「横浜市~」から始まるものもあるため ありゃ。気を回しすぎて裏目に出たようですね(^^;;; 下記は「部分一致検索」版です。 =INDEX(Sheet1!A$1:A$99,MATCH(TRUE,INDEX(ISNUMBER(FIND(Sheet1!B$1:B$99,B1)),),0))&"" なお、部分一致検索だと、例えば、 Sheet2!B列の「香川県丸亀市広島町」に対して Sheet1!B列の「広島」がヒットします、念のため。 以上ご参考まで。
お礼
_Kyle様 早速希望とおりのご回答ありがとうございます!!!! まさに求めていた動きが実現できました! 世の中には_Kyle様のような高い能力をお持ちの方がいるんだととても感動しております。ありがとうございました!
- _Kyle
- ベストアンサー率78% (109/139)
Sheet2のA1セルを =INDEX(Sheet1!A$1:A$99,MATCH(TRUE,INDEX(ISNUMBER(MATCH(Sheet1!B$1:B$99&"*",B1,0)),),0))&"" として下方にフィルすればよいかと思います。 ※「部分一致検索」であればFINDを使うのがセオリーですが、 質問文の例を勘案して、MATCHを使い「前方一致検索」にしています。 以上ご参考まで。
お礼
早速のご回答、ありがとうございました。 途方にくれていたのですが、光明が見えてきました! 早速試してみます! FIND文の方法もご教示いただける大変助かります。 どうぞよろしくお願い致します。
補足
早速、ご回答いただきまして誠にありがとうございました。 1つ付け加え忘れたのですが、Sheet2のセルBのデータによっては 「横浜市~」から始まるものもあるため、もしお分かりでしたら FIND分のものをご教示いただけると大変助かります。 どうぞよろしくお願い致します。
お礼
cistronezk様 即レスありがとうございました。 cistronezk様の高度な知識に感服しつつ、目的の動作が実現できたので、感動しました。 今夜は、cistronezk様に足を向けて眠れません(笑) 本当に助かりました!ありがとうございます。