- 締切済み
[EXCEL2003]vlookup応用
vlookup関数の検索の値をセル内の文字列全部ではなく、 左から3つめまでの文字列で検索というようなことをしたいです。 例えば、下の表で、 A1の左から3つの文字(123)で検索し、 C1の左から3つの文字(124)と一致したら、 D1の値(999)をB1に入れる という感じです。 A B C D 1 123A 123B 999 LEFT関数を使いそうだとは思ったので、 いろいろ試してみたのですがうまくいきません。 質問の中に不備があるかも知れませんが、 その点についても指摘していただけるとうれしいです。 初心者なので基本的な部分がわかっていないかと知れません。 どうかよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Sinogi
- ベストアンサー率27% (72/260)
回答No.3
作業列を使えばLeft関数で対応できると思います。 現状のc列/d列をd/e列とし c1 =left(d1,3) b1 =VLOOKUP(LEFT(A1,3),C1:E1,3,FALSE)
- suekun
- ベストアンサー率25% (369/1454)
回答No.2
検索範囲にLEFTを使用するには配列にするしかないと思います。 そこでVLOOKUPではなく、MATCHを使って範囲の中で上から 何番目に123があるかを検索し、INDEXでその隣の同じ位置の値を 拾います。 配列数式なので、Shiftを押しながらCtrlを押しながらEnterで 確定させます。 数式が{}で括られたら完成です。 {=INDEX(D1:D3,MATCH(LEFT(A1,3),LEFT(C1:C3,3)))}
- mu2011
- ベストアンサー率38% (1910/4994)
回答No.1
一例です。 検索値をワイルドカードにすれば可能と思います。 =VLOOKUP(LEFT(A1,3)&"*",C1:D5,2,FALSE)
お礼
ありがとうございます。 ワイルドカードの使い方知りませんでしたので、 私が試したときは、 &を+にしてしまってエラーになりました。 ワイルドカードは別の場面でも使う機会が多そうなので、 大変ありがたいです。 本当にありがとうございました。