ホーム / 関数 / Excel VLOOKUP 関数の使い方
検索/行列 Excel + Google スプレッドシート

Excel VLOOKUP 関数の使い方

VLOOKUP(ブイルックアップ)は、表の一番左の列から値を探し、同じ行にある別の列の値を返す Excel(エクセル)の検索関数です。4つの引数の意味、完全一致と近似一致の違い、複数条件での検索、#N/A エラーの直し方を、例題と練習問題で身につけましょう。

VLOOKUP 関数の構文と4つの引数

=VLOOKUP(検索値, 範囲, 列番号, [検索方法])

VLOOKUP(Vertical Lookup、縦方向の検索)は、範囲の一番左の列を上から順に調べ、見つかった行の指定した列の値を返します。

1 検索値(lookup_value)
必須

探したい値です(商品コード E2、顧客名、数値など)。この値は、範囲の「一番左の列」に入っている必要があります。

2 範囲(table_array)
必須

検索する表の範囲です(例:A2:D6)。数式を下や右にコピーするときは、$A$2:$D$6 のように $ で固定します。

3 列番号(col_index_num)
必須

返したい値が、範囲の左から何列目にあるかを指定します(左端の列が 1)。A2:C6 なら A 列が 1、C 列が 3 です。シートの列番号ではありません。

4 検索方法(range_lookup)
省略可

FALSE(または 0)は完全一致で、ほとんどの業務ではこちらを指定します。TRUE(または 1、省略)は近似一致で、税率表のような段階の検索に使い、左端の列を昇順に並べておく必要があります。

VLOOKUP の基本例題:商品コードから単価を検索

A 列が商品コード、B 列が商品名、C 列が単価です。E2 に検索したいコード SKU-102 が入っています。この VLOOKUP の基本例題では、完全一致で単価を引いてきます。

商品コード商品名単価
SKU-101ノート12
SKU-102ペンセット8
SKU-103バインダー15
SKU-104ホチキス9
=VLOOKUP(E2, A2:C5, 3, FALSE)

VLOOKUP は A2:C5 の左端の列から SKU-102 を探し、同じ行の3列目の値 8 を返します。FALSE(または 0)は完全一致の指定です。4つ目の引数を省略すると近似一致になり、並べ替えていない表では、エラーも出さずに別の行の値を返すことがあります。コードが表にない、数字が文字列として入っている、余分なスペースがある場合は、#N/A エラーになります。

VLOOKUP で複数条件を指定する方法

VLOOKUP が検索できる値は1つだけです。「支店」と「商品」の2つの条件で単価を探したいときは、2つの値をつなげた検索用の列を作ります。表の左端に作業列を足し、条件を & でつないだ値を入れてください。

検索キー(A 列)支店商品単価
東京|キーボード東京キーボード199
東京|マウス東京マウス89
大阪|キーボード大阪キーボード209
大阪|マウス大阪マウス95

A2 に入れる作業列の数式(A5 まで下にコピー)

=B2&"|"&C2

G2 に支店(大阪)、H2 に商品(マウス)を入れたときの VLOOKUP

=VLOOKUP(G2&"|"&H2, A2:D5, 4, FALSE)

検索値も &"|" で同じ形につなぐので、「大阪|マウス」が A 列から見つかり、同じ行の4列目から 95 が返ります。区切りの | を入れておくと、「東京」+「ソフト」と「東京ソ」+「フト」のように、つないだ結果が偶然同じになる取り違えを防げます。

作業列を増やしたくない場合は、Microsoft 365 なら XLOOKUP で次のように書けます。

=XLOOKUP(G2&"|"&H2, B2:B5&"|"&C2:C5, D2:D5)

VLOOKUP の #N/A エラーの対処法(あるのにヒットしないとき)

#N/A は「検索値が見つからない」というエラーです。表に値があるように見えても、次の原因で一致しないことがよくあります。

  • 検索値が表の左端の列にない(VLOOKUP は左端の列しか探しません)。
  • セルの前後に余分なスペースがある。TRIM 関数で取り除けます。
  • 数字と文字列の違い。見た目は同じ 1001 でも、一方が文字列だと一致しません。VALUE 関数で数値にそろえるか、検索値を &"" で文字列にそろえます。
  • 全角と半角の違い。「ABC」と「ABC」は別の値として扱われます。
  • 4つ目の引数を省略して近似一致になっている。完全一致で探すなら FALSE を付けます。
  • 数式を下にコピーして、範囲がずれた。範囲は $A$2:$C$6 のように $ で固定します。

原因を直せない(もともと表に存在しない)場合は、エラーを別の表示に置き換えます。

未登録のコードは「未登録」と表示する

=IFERROR(VLOOKUP(E2, A2:C6, 3, FALSE), "未登録")

IFERROR は #N/A 以外のエラーもまとめて隠してしまうため、数式の間違いに気づきにくくなります。#N/A だけを置き換えたいときは IFNA 関数を使います。ほかのエラーは、列番号が範囲の列数より大きいと #REF!、1 より小さいと #VALUE! になります。

VLOOKUP でつまずきやすい4つの落とし穴

1. 省略すると近似一致になる(FALSE の付け忘れ)

4つ目の引数を省略すると、VLOOKUP は TRUE の近似一致で動きます。昇順に並べていない文字列では、エラーにならずに別の行の値を返してしまいます。社員番号や注文番号の検索では、必ず FALSE か 0 を付けましょう。

2. 左から右にしか検索できない

検索値は、範囲の一番左の列に入っている必要があります。検索キーが C 列にあり、取り出したい値が A 列にある場合、VLOOKUP では引けません。INDEX と MATCH の組み合わせか、XLOOKUP を使ってください。

3. 列番号を直接書くと、列の挿入で壊れる

列番号は 3 のような固定の数字です。表の途中に列を挿入すると、もとの3列目が4列目にずれますが、VLOOKUP の数字は自動では変わりません。間違った列の値が返るか、#REF! エラーになります。

4. 文字列と数値の違いで #N/A になる

見た目は同じ 1001 でも、片方が文字列(左揃え)、もう片方が数値(右揃え)だと、VLOOKUP は #N/A を返します。前後に余分なスペースがある場合も同じです。TRIM(E2) や VALUE(E2) でそろえてください。

検索関数の比較:VLOOKUP・XLOOKUP・INDEX+MATCH

VLOOKUP

昔から使われている定番の関数です。古いバージョンの Excel でも動き、試験や面接でもよく出題されます。弱点は、右方向にしか検索できないことと、列を挿入すると壊れやすいことです。

XLOOKUP

現在のおすすめです。左右どちらにも検索でき、見つからないときの値を指定でき、既定で完全一致になり、列を挿入しても壊れません。Microsoft 365 や Google スプレッドシートなら、こちらを優先しましょう。

INDEX + MATCH

古くから使われる安定した組み合わせです:=INDEX(A2:A6, MATCH(E2, C2:C6, 0))。列を挿入しても壊れず、左方向の検索もでき、どのバージョンの Excel でも動きます。

Excel と Google スプレッドシートの違い・応用

Microsoft Excel (365 / Desktop)

Microsoft 365 の Excel では、配列定数を使って複数の列を一度に返せます:=VLOOKUP(F2, A2:D6, {2, 3, 4}, FALSE)。古いバージョンの Excel では、列ごとに列番号を変えた数式が必要です。

Google スプレッドシート

Google スプレッドシートでは、=ARRAYFORMULA(VLOOKUP(E2:E, A2:D, 3, FALSE)) と書くと、先頭の1行の数式だけで列全体の行をまとめて検索できます。

VLOOKUP を練習しよう:商品コードから単価を検索

下のロックされたシートに数式を入力すると、すぐに合否を確認できます。別ページの全画面表示で練習することもできます。

練習問題のページを開く
問題文
ヒント 0/4
模範解答 2
–
テストケース
1
2
3
リセット
提出
fx
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
9
10
インタラクティブなスプレッドシートを読み込み中...
セルと数式の計算エンジンを準備しています
○ 準備完了 ハイライトされたセルに数式を入力し、「提出」を押してください。

ほかの VLOOKUP 練習問題

完全一致、税率表の近似一致、複数列の取り出し、IFERROR によるエラー処理を、実務に近い場面で練習できます。

よくある質問

VLOOKUP とは何ですか?

VLOOKUP(ブイルックアップ)は、表の一番左の列から検索値を探し、同じ行にある指定した列の値を返す Excel(エクセル)の関数です。書式は =VLOOKUP(検索値, 範囲, 列番号, [検索方法]) で、商品コードから単価を引くような場面でよく使います。

VLOOKUP の使い方を教えてください。

=VLOOKUP(E2, A2:C6, 3, FALSE) のように、検索値(E2)、探す表の範囲(A2:C6)、返したい値が範囲の左から何列目か(3)、完全一致の FALSE の順に指定します。FALSE を付けるのを忘れないことが大切です。

VLOOKUP で #N/A エラーが出るのはなぜですか?

表の左端の列に検索値がない、前後に余分なスペースがある、数字と文字列が混ざっている、全角と半角が違う、FALSE を付けずに近似一致になっている、のどれかであることがほとんどです。直せない場合は IFERROR や IFNA で表示を置き換えます。

VLOOKUP で複数条件を指定できますか?

VLOOKUP そのものは条件を1つしか指定できません。条件を & でつないだ作業列を表の左端に作り、検索値も同じ形につなげば、複数条件で検索できます。Microsoft 365 では XLOOKUP を使う方法もあります。

VLOOKUP の TRUE と FALSE の違いは何ですか?

FALSE(または 0)は完全一致で、見つからなければ #N/A になります。TRUE(または 1、省略)は近似一致で、左端の列を昇順に並べておく必要があります。税率表や成績の段階のような、範囲で値を決める場面に向いています。

Google スプレッドシートでも VLOOKUP は使えますか?

使えます。書式は Excel と同じです。さらに =ARRAYFORMULA(VLOOKUP(E2:E, A2:C, 3, FALSE)) と書けば、列全体の行をまとめて検索でき、数式を下にコピーする必要がありません。

VLOOKUP と XLOOKUP はどちらを使うべきですか?

Microsoft 365 や Google スプレッドシートなら XLOOKUP がおすすめです。左方向にも検索でき、列を挿入しても壊れず、既定で完全一致になります。古いバージョンの Excel でも開くファイルや、試験・面接の対策には、VLOOKUP が今でも欠かせません。