• 締切済み

[EXCEL2003]vlookup応用

vlookup関数の検索の値をセル内の文字列全部ではなく、 左から3つめまでの文字列で検索というようなことをしたいです。 例えば、下の表で、 A1の左から3つの文字(123)で検索し、 C1の左から3つの文字(124)と一致したら、 D1の値(999)をB1に入れる という感じです。     A    B   C    D  1  123A     123B 999 LEFT関数を使いそうだとは思ったので、 いろいろ試してみたのですがうまくいきません。 質問の中に不備があるかも知れませんが、 その点についても指摘していただけるとうれしいです。 初心者なので基本的な部分がわかっていないかと知れません。 どうかよろしくお願いします。

みんなの回答

  • 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)

asdf111
質問者

お礼

ありがとうございます。 ワイルドカードの使い方知りませんでしたので、 私が試したときは、 &を+にしてしまってエラーになりました。 ワイルドカードは別の場面でも使う機会が多そうなので、 大変ありがたいです。 本当にありがとうございました。

関連するQ&A

専門家に質問してみよう