概要
「コードを元に名前や単価を引っ張ってきたい」「社員番号から部署を出したい」――そんな“縦方向の検索”でまず使われるのが VLOOKUP です。
表の一番左の列で検索し、見つかった行の“右側の列”から値を返します。
基本形さえ覚えてしまえば、マスタ参照・台帳参照・単価引き当てなど、事務仕事のかなりの部分を自動化できます。
基本の考え方
VLOOKUP の役割は「左端の列で探して、右側から取ってくる」です。
たとえば「商品コード一覧」がA列、「商品名」がB列、「単価」がC列に並んでいる場合、A列でコードを検索し、その行のB列・C列を返せます。
書式はこうです。
=VLOOKUP(検索値, 範囲, 列番号, 検索の型)
- 検索値:探したい値(商品コードなど)。たとえば E2。
- 範囲:検索する表全体。たとえば A2:C100。
- 列番号:範囲の左から数えて「何列目を返すか」。商品名なら2、単価なら3。
- 検索の型:0(FALSE)なら「完全一致」、1(TRUE)なら「近似値」。通常は 0 を使います。
定番パターンは次の形です。
=VLOOKUP(E2, $A$2:$C$100, 2, FALSE) ' 商品名を取る
=VLOOKUP(E2, $A$2:$C$100, 3, FALSE) ' 単価を取る
基本の使い方(コードと名前・単価)
商品コードから商品名を引く
前提の表(マスタ)がこんなイメージだとします。
- A列:商品コード
- B列:商品名
- C列:単価
注文シート側で、E列に商品コードを入力したら、F列に商品名を表示したい場合。
=VLOOKUP(E2, $A$2:$C$100, 2, FALSE)
ポイントをかみ砕くと:
- 「E2 のコードを」
- 「A2:C100 の左端(A列)から探して」
- 「見つかった行の 2列目(B列=商品名)を返す」
- 「完全一致で探す(FALSE)」
という意味です。
商品コードから単価を引く
同じマスタから単価を取るなら列番号を 3 に変えるだけです。
=VLOOKUP(E2, $A$2:$C$100, 3, FALSE)
応用の使い方(エラー対策・入力補助)
見つからないときに「空」やメッセージを出す
VLOOKUP は見つからないと #N/A エラーになります。
ユーザーに優しいシートにするには、IFERROR で包んでおくのがおすすめです。
=IFERROR(VLOOKUP(E2, $A$2:$C$100, 2, FALSE), "")
あるいは、メッセージを出したいなら:
=IFERROR(VLOOKUP(E2, $A$2:$C$100, 2, FALSE), "コード未登録")
入力途中(空欄)のときは何も表示しない
コードセルが空のときまで VLOOKUP を走らせると、無駄な "" やエラーが出ます。
まず空かどうかを確認してから検索させると見た目がきれいになります。
=IF(E2="","",IFERROR(VLOOKUP(E2,$A$2:$C$100,2,FALSE),"コード未登録"))
流れとしては:
- E2 が空なら、空を返す
- そうでなければ VLOOKUP を実行し、見つからなければ「コード未登録」
よくあるつまずきと対策
1. 検索列は「範囲の一番左」でないとダメ
VLOOKUP は「範囲の左端の列」で検索します。
たとえば、商品コードが B列、商品名が A列だったとしても、次のように範囲を B列始まりにすればOKです。
=VLOOKUP(E2, $B$2:$C$100, 2, FALSE)
検索したい列が範囲の左端に来るように、範囲を切り方で工夫してください。
2. 列番号は「範囲に対しての位置」で数える
A〜C列のどれを返したいかではなく、「指定した範囲の左から何列目か」で数えます。
範囲が B2:D100 なら:
- B列 → 1列目
- C列 → 2列目
- D列 → 3列目
というカウントになる点に注意してください。
3. 完全一致検索では「FALSE」を使う
第4引数を省略すると、近似値(TRUE)扱いになりやすく、コード・ID検索には危険です。
「完全一致で拾いたい」時は、必ず FALSE(または 0)を指定しましょう。
=VLOOKUP(E2,$A$2:$C$100,2,FALSE)
4. 文字列 vs 数値の違いで「見つからない」
見た目が同じでも、片方が「数値」、もう片方が「文字列」だと別物として扱われます。
- マスタ側のコードが
00123(文字列)、入力側が123(数値)など
コード列を揃えるには、TEXT関数やVALUE関数で片方の型を統一します。
=VLOOKUP(TEXT(E2,"00000"), $A$2:$C$100, 2, FALSE)
など。
5. 列の挿入で列番号がズレる
中間列を挿入すると、列番号が変わって参照先がズレます。
VLOOKUPの弱点でもあるので、「列をいじる可能性が高い表」では XLOOKUP や INDEX/MATCH への移行も検討の余地があります(ただしここではVLOOKUP理解に集中)。
例題
問題1: 商品マスタ(A2:C100)から、E2に入力した商品コードの「商品名」をF2に表示してください。
A列=商品コード、B列=商品名、C列=単価とします。
=VLOOKUP(E2, $A$2:$C$100, 2, FALSE)
問題2: 同じマスタから、E2のコードに対応する「単価」をG2に表示してください。
=VLOOKUP(E2, $A$2:$C$100, 3, FALSE)
問題3: E2のコードがマスタに存在しない場合は「コード未登録」と表示し、それ以外は商品名をF2に表示してください。
=IFERROR(VLOOKUP(E2, $A$2:$C$100, 2, FALSE), "コード未登録")
問題4: E2が空欄のときは何も表示せず、入力されているときだけ商品名をF2に表示してください(マスタA2:C100)。
=IF(E2="","",IFERROR(VLOOKUP(E2,$A$2:$C$100,2,FALSE),"コード未登録"))
問題5: 商品コードがB列、商品名がC列のマスタ(B2:C100)から、E2のコードに対応する商品名をF2に表示してください。
※VLOOKUPは範囲の左端列で検索する点に注意
=VLOOKUP(E2, $B$2:$C$100, 2, FALSE)
まとめ
VLOOKUPは「左端列で探して右側から値を返す」縦方向検索の基本ツールです。
ポイントは次の4つだけ。
- 検索したい列を範囲の一番左にする
- 列番号は“範囲の左から数える”
- 第4引数は FALSE(完全一致)を明示
- IFERRORと組み合わせてエラー処理をしておく
この型さえ身体に入ってしまえば、「コード→名称」「社員番号→部署」「品番→単価」など、あらゆる“マスタ参照”が一瞬で自動化できます。

