- ベストアンサー
vlookup関数で検索値を含む文字列を検索する方法
vlookup関数で例えば E1のセルに=vlookup(D1,A:C,3,false)とした場合、D1が佐藤であれば、A列に「佐藤」がある場合には当然、「佐藤」がある行の3列目の値が返されますが、「佐藤」はなく「佐藤A」や「A佐藤」がある場合にもこれらがある行の値を返して欲しいのですが、いい方法はありませんでしょうか。*を使ってできると思ったのですがうまくいきません。上記例で、=vlookup("*佐藤*",A:C,3,false)とすればできますが、*佐藤*の部分はD1の引用を利用したいのです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
=VLOOKUP("*"&D1&"*",A:C,3,FALSE)
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17070)
#2です。 >式を=OFFSET(E1,MATCH(A1&"*",$D$1:$D$6,0)-1,0)とせずに上記のようにした意図がわからなかったのですが >$D$1:$D$6 ミスですね。すみません。 >OFFSET(E1,MA・・のE1 OFFSETの基点なのでD1にしたりE1にしたり、2,3書き方はありえます。関係箇所は少し変わりますが。 質問のAーC列は、検索表を2列の例にしました点は、質問と変えてます。 >vlookup関数でもワイルドカードが使えました そうですね。済みませんでした。
お礼
早速のご回答ありがとうございました。よくわかりました。2度手間とらせてしまいすみませんでした。
- imogasi
- ベストアンサー率27% (4737/17070)
例データ D1:E6 木下 12 佐藤彦 23 北佐藤商店 34 佐藤 3 北田 11 大松 16 A1 に「佐藤」 B1 に =OFFSET(D2,MATCH(A1&"*",$D$2:$D$6,0)-1,1) ワイルドカード*、?が使えます。 ただしD列は文字列であること。 該当の一番上の行しか返さない。 VLOOKUP関数はワイルドカード*、?が使えないと思うが。 上記は=OFFSET(D2,MATCH("*"&A1&"*",$D$2:$D$6,0)-1,1) がベターかも。先頭に限るなら別になると思う。
お礼
回答ありがとうございます。こんな方法もあるのですね、参考にさせていただきます。ただ、一応回答No1のとおりやるとvlookup関数でもワイルドカードが使えました。また、式を=OFFSET(E1,MATCH(A1&"*",$D$1:$D$6,0)-1,0)とせずに上記のようにした意図がわからなかったのですが教えていただけますでしょうか。よろしくお願いします。
お礼
早速のご回答ありがとうございます。うまくいきました。