- ベストアンサー
エクセルVLOOKUPについて質問です
同じブック内で業者一覧のシートにA列業者コードB列業者名が入っています。 別のシートでE列に業者名を入れるとD列にコードが入る様に =VLOOKUP(E6,業者一覧!$A$2:$B$480,1,FALSE) と入れました。#N/Aのエラーが出てしまいます。 この関数の使い方は間違っているのでしょうか? 以前似たような物を作った時は、VLOOKUPを使って簡単に検索できたのに、 今回は色々参考にしてみましたが、私が理解しきれていないのか、 エラーが出る要素が他にあるのか分からず質問します。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 VLOOKUP関数は、選択範囲の左端の列の値を参照する関数です。 シート「業者一覧」のA列(左端)は業者コードとの事なので、質問者様の数式では「E6に入力した業者名と同じ物をA列(業者コード)の中から探し出て、対応する業者コードを抽出する」の意味になります。 A列とB列を入れ替えて「~,1,FALSE」の部分を「~,2,FALSE」に書き直すと検出できると思います。 A列とB列を入れ替えたくない場合は、 =INDEX($A$2:$A$480,MATCH(E6,$B$2:$B$480,0)) とするか、 =OFFSET($A$2,MATCH(E6,$B$2:$B$480,0)-1,0) にするかすれば良いと思います。
その他の回答 (2)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! No.1さんの回答どおりです! VLOOKUP関数は範囲指定した一番左端の列を検索し、 検索した同じ行にある値を返します。 (列は複数でも構いません) だから、検索列より左側を返すことは出来ないはずです。 以上、余計なお世話かもしれませんが・・・ お邪魔いたしました。m(__)m
お礼
そいうことだったんですね。 VLOOKUPを理解していなかったようです。 単純に指定した中に同じセルがあったらその行の 何列目を返すという事だと理解していました。 解り易い回答ありがとうございました。
- asaasa1961
- ベストアンサー率31% (129/411)
素人考えのお答えで申しわけないですが、業者名を入力して、 業者コードを表示させるには、 A列と、B列を入れ替えて、 =VLOOKUP(E6,業者一覧!$A$2:$B$480,2,FALSE) (1 → 2)にしなければならないのではないでしょうか?
お礼
お答ありがとうございます。 列を入れ替えたら出来ました。 出来れば配列は変えたくなかったのですが VLOOKUPは検索元のシートの配列が関係あるのでしょうか?
お礼
=INDEX(業者一覧!$A$2:$A$480,MATCH(E6,業者一覧!$B$2:$B$480,0)) で配列を変えないで出来ました。 今回はこの関数を使おうと思います。 ありがとうございました。