こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel データを部分一致で抽出して表示したい (関数 または VBA)

まずは下のサンプルデータを見ながら本文を読んでください。

Excelの関数(lookup か vlookup) か VBAを利用して、
Sheet2のセルA列にデータを自動的に表示したい と思っています。

Sheet2のセルA列に表示したいデータは、Sheet1のセルAの情報です。

例えば、Sheet2のセルB1が「静岡県」の場合は、「営業2部」という文字が
Sheet2のセルA1に表示されるようにしたいと思っています。

つまり、Sheet1のセルB が Sheet2のセルB の内容と
部分一致した場合に、Sheet2のセルA列に 該当データ(Sheet1のセルA)を
抽出して表示するということをやりたいと考えています。

どうぞよろしくお願い致します。


サンプルデータ

◆Sheet1 参照元となる表

___|___セルA___|________セルB
----------------------------
1 | 営業1部 | 東京都千代田区
----------------------------
2 | 営業2部 | 静岡県
----------------------------
3 | 営業2部 | 山梨県
----------------------------
4 | 営業3部 | 東京都渋谷区
----------------------------
5 | 流通1部 | 神奈川県
----------------------------



◆Sheet2 データを埋めたい表

___|____セルA_____|_______セルB
----------------------------
1 |________________| 静岡県富士市大淵 24
----------------------------
2 |________________| 東京都千代田区丸の内1-8
----------------------------
3 |________________| 大阪府大阪市中央区南船場1―15
----------------------------
4 |________________| 神奈川県横浜市
----------------------------
5 |________________| ※以下 セルBには500件ほどの都道府県データあり。
6
7

投稿日時 - 2009-07-31 21:12:02

QNo.5171499

すぐに回答ほしいです

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

#3の最後の部分を訂正です。

>となっていると、5行目の「神奈川」を探し出し「流通1部」が返ることになります。

正しくは、探し出せずに何も返らない、です、失礼しました。

投稿日時 - 2009-07-31 23:36:12

お礼

cistronezk様
即レスありがとうございました。
cistronezk様の高度な知識に感服しつつ、目的の動作が実現できたので、感動しました。
今夜は、cistronezk様に足を向けて眠れません(笑)
本当に助かりました!ありがとうございます。

投稿日時 - 2009-08-01 01:12:58

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

>1つ付け加え忘れたのですが、Sheet2のセルBのデータによっては
>「横浜市~」から始まるものもあるため、(以下略)

この場合、参照元のSheet1には、

___|___セルA___|________セルB
・・・
----------------------------
9 | 営業5部 | 横浜市
----------------------------
・・・
というようなデータがあるのでしょうか?もしなくて
----------------------------
9 | 営業5部 | 神奈川県横浜市
----------------------------
となっていると、5行目の「神奈川」を探し出し「流通1部」が返ることになります。その点は注意された方がいいでしょう。

投稿日時 - 2009-07-31 23:31:31

ANo.2

#1です。

>「横浜市~」から始まるものもあるため

ありゃ。気を回しすぎて裏目に出たようですね(^^;;;

下記は「部分一致検索」版です。

 =INDEX(Sheet1!A$1:A$99,MATCH(TRUE,INDEX(ISNUMBER(FIND(Sheet1!B$1:B$99,B1)),),0))&""

なお、部分一致検索だと、例えば、
Sheet2!B列の「香川県丸亀市広島町」に対して
Sheet1!B列の「広島」がヒットします、念のため。

以上ご参考まで。

投稿日時 - 2009-07-31 22:57:31

お礼

_Kyle様
早速希望とおりのご回答ありがとうございます!!!!
まさに求めていた動きが実現できました!
世の中には_Kyle様のような高い能力をお持ちの方がいるんだととても感動しております。ありがとうございました!

投稿日時 - 2009-08-01 01:16:01

ANo.1

Sheet2のA1セルを

 =INDEX(Sheet1!A$1:A$99,MATCH(TRUE,INDEX(ISNUMBER(MATCH(Sheet1!B$1:B$99&"*",B1,0)),),0))&""

として下方にフィルすればよいかと思います。

※「部分一致検索」であればFINDを使うのがセオリーですが、
 質問文の例を勘案して、MATCHを使い「前方一致検索」にしています。

以上ご参考まで。

投稿日時 - 2009-07-31 21:35:25

補足

早速、ご回答いただきまして誠にありがとうございました。

1つ付け加え忘れたのですが、Sheet2のセルBのデータによっては
「横浜市~」から始まるものもあるため、もしお分かりでしたら
FIND分のものをご教示いただけると大変助かります。

どうぞよろしくお願い致します。

投稿日時 - 2009-07-31 22:39:09

お礼

早速のご回答、ありがとうございました。
途方にくれていたのですが、光明が見えてきました!
早速試してみます!

FIND文の方法もご教示いただける大変助かります。
どうぞよろしくお願い致します。

投稿日時 - 2009-07-31 22:42:36

あなたにオススメの質問