Excel VLOOKUP 関数の使い方
VLOOKUP(ブイルックアップ)は、表の一番左の列から値を探し、同じ行にある別の列の値を返す Excel(エクセル)の検索関数です。4つの引数の意味、完全一致と近似一致の違い、複数条件での検索、#N/A エラーの直し方を、例題と練習問題で身につけましょう。
VLOOKUP 関数の構文と4つの引数
VLOOKUP(Vertical Lookup、縦方向の検索)は、範囲の一番左の列を上から順に調べ、見つかった行の指定した列の値を返します。
探したい値です(商品コード E2、顧客名、数値など)。この値は、範囲の「一番左の列」に入っている必要があります。
検索する表の範囲です(例:A2:D6)。数式を下や右にコピーするときは、$A$2:$D$6 のように $ で固定します。
返したい値が、範囲の左から何列目にあるかを指定します(左端の列が 1)。A2:C6 なら A 列が 1、C 列が 3 です。シートの列番号ではありません。
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 は A2:C5 の左端の列から SKU-102 を探し、同じ行の3列目の値 8 を返します。FALSE(または 0)は完全一致の指定です。4つ目の引数を省略すると近似一致になり、並べ替えていない表では、エラーも出さずに別の行の値を返すことがあります。コードが表にない、数字が文字列として入っている、余分なスペースがある場合は、#N/A エラーになります。
VLOOKUP で複数条件を指定する方法
VLOOKUP が検索できる値は1つだけです。「支店」と「商品」の2つの条件で単価を探したいときは、2つの値をつなげた検索用の列を作ります。表の左端に作業列を足し、条件を & でつないだ値を入れてください。
| 検索キー(A 列) | 支店 | 商品 | 単価 |
|---|---|---|---|
| 東京|キーボード | 東京 | キーボード | 199 |
| 東京|マウス | 東京 | マウス | 89 |
| 大阪|キーボード | 大阪 | キーボード | 209 |
| 大阪|マウス | 大阪 | マウス | 95 |
A2 に入れる作業列の数式(A5 まで下にコピー)
G2 に支店(大阪)、H2 に商品(マウス)を入れたときの VLOOKUP
検索値も &"|" で同じ形につなぐので、「大阪|マウス」が A 列から見つかり、同じ行の4列目から 95 が返ります。区切りの | を入れておくと、「東京」+「ソフト」と「東京ソ」+「フト」のように、つないだ結果が偶然同じになる取り違えを防げます。
作業列を増やしたくない場合は、Microsoft 365 なら XLOOKUP で次のように書けます。
VLOOKUP の #N/A エラーの対処法(あるのにヒットしないとき)
#N/A は「検索値が見つからない」というエラーです。表に値があるように見えても、次の原因で一致しないことがよくあります。
- 検索値が表の左端の列にない(VLOOKUP は左端の列しか探しません)。
- セルの前後に余分なスペースがある。TRIM 関数で取り除けます。
- 数字と文字列の違い。見た目は同じ 1001 でも、一方が文字列だと一致しません。VALUE 関数で数値にそろえるか、検索値を &"" で文字列にそろえます。
- 全角と半角の違い。「ABC」と「ABC」は別の値として扱われます。
- 4つ目の引数を省略して近似一致になっている。完全一致で探すなら FALSE を付けます。
- 数式を下にコピーして、範囲がずれた。範囲は $A$2:$C$6 のように $ で固定します。
原因を直せない(もともと表に存在しない)場合は、エラーを別の表示に置き換えます。
未登録のコードは「未登録」と表示する
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 練習問題
完全一致、税率表の近似一致、複数列の取り出し、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 が今でも欠かせません。