プロが教える店舗&オフィスのセキュリティ対策術

vlookup関数で例えば E1のセルに=vlookup(D1,A:C,3,false)とした場合、D1が佐藤であれば、A列に「佐藤」がある場合には当然、「佐藤」がある行の3列目の値が返されますが、「佐藤」はなく「佐藤A」や「A佐藤」がある場合にもこれらがある行の値を返して欲しいのですが、いい方法はありませんでしょうか。*を使ってできると思ったのですがうまくいきません。上記例で、=vlookup("*佐藤*",A:C,3,false)とすればできますが、*佐藤*の部分はD1の引用を利用したいのです。
 よろしくお願いします。

A 回答 (3件)

=VLOOKUP("*"&D1&"*",A:C,3,FALSE)

    • good
    • 22
この回答へのお礼

早速のご回答ありがとうございます。うまくいきました。

お礼日時:2007/02/18 20:39

#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関数でもワイルドカードが使えました
そうですね。済みませんでした。
    • good
    • 4
この回答へのお礼

早速のご回答ありがとうございました。よくわかりました。2度手間とらせてしまいすみませんでした。

お礼日時:2007/02/19 07:17

例データ 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)
がベターかも。先頭に限るなら別になると思う。
    • good
    • 6
この回答へのお礼

回答ありがとうございます。こんな方法もあるのですね、参考にさせていただきます。ただ、一応回答No1のとおりやるとvlookup関数でもワイルドカードが使えました。また、式を=OFFSET(E1,MATCH(A1&"*",$D$1:$D$6,0)-1,0)とせずに上記のようにした意図がわからなかったのですが教えていただけますでしょうか。よろしくお願いします。

お礼日時:2007/02/18 21:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!