VLOOKUP関数について①
LEVEL 5 で論理関数を学び、Excel の関数も一段深いところまで来ました。
そしてここからいよいよ多くの方が「Excelといえばこれ」と思っている関数、VLOOKUP(ブイルックアップ)関数 に入ります。
「別の表から、対応する値を引っ張ってくる」というのが VLOOKUP 関数の仕事です。
- 商品コードから、商品名を引っ張ってくる
- 社員番号から、所属部署を引っ張ってくる
- 郵便番号から、住所を引っ張ってくる
実務で本当によく使われる関数です。
最初は引数が4つあって、ちょっとややこしく感じるかもしれませんが、ひとつずつ見ていきましょう。
関数は「検索/行列」の中にあります。

VLOOKUP関数の構文
=VLOOKUP(検索値, 範囲, 列番号, 検索方法)
引数は4つあります。
- 検索値:何を探すか
- 範囲:どの表から探すか
- 列番号:見つけた行の、何列目を返すか
- 検索方法:完全一致か、近似一致か
最初は混乱しますが、「何を、どこから探して、何列目を取ってくるか」 と読めばOKです。検索方法は、今回は FALSE(完全一致) だけを使います。

具体例で見てみる
商品コードと商品名・単価が並んだ「商品マスタ」があって、注文表の 商品コード欄に入力したら、商品名と単価が自動で入る ようにしたい、というケース。
:::excel
A1=商品コード
B1=商品名
C1=単価
A2=P001
B2=コーヒー
C2=400
A3=P002
B3=紅茶
C3=350
A4=P003
B4=ケーキ
C4=500
A5=P004
B5=サンドイッチ
C5=600
A6=P005
B6=パスタ
C6=900
:::
これが「商品マスタ」です。A列がコード、B列が商品名、C列が単価。
ここから「P003 の商品名は何か」を取り出したいとき、次のように書きます。
=VLOOKUP("P003", A:C, 2, FALSE)
- 検索値:"P003"(探したいコード)
- 範囲:A:C(商品マスタの全体)
- 列番号:2(マスタの2列目=商品名)
- 検索方法:FALSE(完全一致)
結果は「ケーキ」が返ります。
「P003 を A列で探して、その行の 2列目(B列)の値を返す」という動きをしているわけです。
範囲は「列選択」が楽
ここでひとつ、実務でぐっと楽になるテクニックを紹介します。
範囲指定のところ、最初は A2:C6 のようにセル範囲で書きたくなりますが、A:C のように列全体を指定する のがおすすめです。
=VLOOKUP("P003", A:C, 2, FALSE)
A:C と書くと、「A列からC列全体」を範囲として扱います。これには、こんなメリットがあります。
ステップ1:マスタに商品が 追加されても、範囲を修正しなくていい
ステップ2:わざわざ範囲に絶対参照をする必要がない
ステップ3:数式が短くなる
「商品マスタが10件のときは A2:C11、20件増えたら A2:C31 に直す…」なんてやっていたら、メンテナンスが大変です。
最初から A:C と列で指定 しておけば、マスタが増えても自動で対応してくれます。
ただし注意点として、範囲の1列目(左端)が「検索値を探す列」になる ことだけは覚えておいてください。A:C と指定したら、A列が検索対象になります。
「列番号」の数え方
引数の3つ目「列番号」は、範囲の左端から数えて何列目か を指定します。
A:C という範囲なら、
- 1列目 → A列(検索対象)
- 2列目 → B列
- 3列目 → C列
「商品名(B列)を取りたいなら 2」、「単価(C列)を取りたいなら 3」となります。
マスタ全体の中での列番号ではなく、指定した範囲の中での何列目か、というところに注意してください。
仮に B:D という範囲を指定した場合、1列目はB列、2列目はC列、3列目はD列に変わります。
検索方法は FALSE(完全一致)
最後の引数「検索方法」には、FALSE または TRUE を指定します。
今回は、FALSE(完全一致) だけを覚えてください。
「P003 を探す」と言ったら、ぴったり P003 と一致するもの だけを探します。これが基本中の基本の動きです。
TRUE(近似一致)は次回扱います。実は使いどころがちょっと限定的なので、まずは FALSE をしっかり身につけましょう。
検索値はセル参照にすることが多い
今回は説明のために "P003" と直接書きましたが、実務では セル参照 にすることがほとんどです。
たとえば、注文表があって、
- E2 に「商品コード」を入力する欄
- F2 に「商品名」を表示する欄
- G2 に「単価」を表示する欄
E2 に商品コードを入れたら、F2 と G2 に自動で値が入る、という形にしたい。
その場合、
F2 のセル: =VLOOKUP(E2, A:C, 2, FALSE)
G2 のセル: =VLOOKUP(E2, A:C, 3, FALSE)
このように書きます。E2 のコードを変えるだけで、F2 と G2 が自動更新される。これが VLOOKUP 関数のすごみです。注文表を下にたくさん並べておけば、コードを入れた瞬間に、ずらっと商品名と単価が並ぶシートが完成します。
見つからないと #N/A エラー
検索値がマスタに存在しないと、VLOOKUP は #N/A(該当なし) というエラーを返します。
たとえば、=VLOOKUP("P999", A:C, 2, FALSE) と書いたとき、P999 がマスタになければ #N/A です。
ここでレッスン047で学んだ IFERROR の出番ですね。
=IFERROR(VLOOKUP(E2, A:C, 2, FALSE), "未登録")
これで、見つからない場合は「未登録」と表示されます。VLOOKUP と IFERROR の組み合わせ は、長く実務の定番として親しまれてきたパターンです。
実は、近年では同じことをもっとシンプルに書ける新しい関数も登場しています。それについては、レッスン051以降で扱う XLOOKUP関数 でご紹介しますね。まずは VLOOKUP の基本動作を、しっかり身につけておきましょう。
まとめ
- VLOOKUP関数で、別の表から対応する値を引っ張ってくる
- 構文:=VLOOKUP(検索値, 範囲, 列番号, 検索方法)
- 範囲は 列全体(A:C)で指定する のが楽
- 列番号は 範囲の左端から数えて何列目か
- 検索方法は FALSE(完全一致) を基本に
- 見つからないと
#N/A→ IFERROR と組み合わせる
次回は、4つ目の引数を TRUE にしたケース。ポイントカードのランク判定など、ちょっと変わった使い方が見えてきます。
ショートカット
※このレッスンに対応するショートカットはありません。