「VLOOKUP関数を使いたいけど、引数の意味がわからない」「#N/Aエラーが出て困っている」という声はよく聞きます。VLOOKUPはExcel関数の中でもトップクラスの検索数を誇る人気関数です。ただ、引数が4つあるぶん最初はとっつきにくいですよね。
この記事では、VLOOKUPの基本的な書き方からエラーの直し方まで解説します。さらにINDEX+MATCHやXLOOKUPとの使い分けも紹介するので、読み終えるころには「VLOOKUPで困ることはほぼない」状態になれるはずです。
この記事は次のような人におすすめ
– 表からデータを自動的に検索・取得したい人
– VLOOKUPのエラーが出て原因がわからない人
– INDEX+MATCHやXLOOKUPとの違いを知りたい人
VLOOKUP関数とは?
読み方と基本的な役割
VLOOKUPは「ブイルックアップ」と読みます。Vertical(垂直)+ Lookup(検索)が名前の由来です。
やっていることはシンプルです。「この値を探して、同じ行にある別の列の値を持ってきて」という指示を出す関数です。
たとえば社員番号を入力したら名前や部署を自動で表示する。商品コードから価格を引っ張ってくる。こうした「表からデータを探す」作業を一発で片付けてくれます。
VLOOKUP関数が向いている場面
VLOOKUPが活躍するのは、次のような場面です。
- マスタ表から情報を取得するとき(商品コード → 商品名など)
- 別シートのデータを参照したいとき
- 請求書や見積書でコードから自動入力したいとき
「検索したい値が表の一番左にある」ならVLOOKUPの出番です。Excel 2007以前を含む全バージョンで使えるので、共有ファイルでも安心して使えます。
VLOOKUP関数の書き方(構文と引数)
基本構文
VLOOKUPの構文はこちらです。
=VLOOKUP(検索値, 範囲, 列番号, [検索の型])
引数は4つあります。最後の「検索の型」だけ省略できます。
引数の説明
| 引数 | 必須/省略可 | 意味 | 指定例 |
|---|---|---|---|
| 検索値 | 必須 | 探したい値。セル参照が一般的 | A2 |
| 範囲 | 必須 | 検索対象の表。最左列に検索値を含むこと | B2:E100 |
| 列番号 | 必須 | 範囲の左端から数えて何列目を返すか(1以上の整数) | 3 |
| 検索の型 | 省略可 | FALSE = 完全一致 / TRUE = 近似一致 | FALSE |
ポイントは「範囲の左端列」で検索が行われることです。検索したい値が左端にない場合は、範囲の取り方を見直してください。
検索の型(FALSE / TRUE)の使い分け
ここがVLOOKUPで一番つまずきやすい部分です。
FALSE(完全一致) は、検索値とぴったり一致するものだけを探します。実務の9割はこちらです。一致しなければ#N/Aエラーが返ります。
=VLOOKUP(A2, マスタ!A:D, 3, FALSE)
TRUE(近似一致) は、検索値以下で最も大きい値を返します。料金表やランク判定で使います。ただし検索列の昇順ソートが必須です。
=VLOOKUP(A2, 料金表!A:B, 2, TRUE)
NOTE
検索の型を省略するとデフォルトはTRUEになります。ここが最大の落とし穴です。「なんか変な値が返る」の原因は、たいていこの省略です。迷ったらFALSEを明示してください。
VLOOKUP関数の基本的な使い方
同じシート内でデータを検索する
商品コードから商品名を取得する例で見てみましょう。
B列〜D列に商品マスタがあるとします。B列が商品コード、C列が商品名、D列が価格です。
G2に入力したコードから商品名を取得するにはこう書きます。
=VLOOKUP(G2, B2:D100, 2, FALSE)
各引数の意味は次のとおりです。
- G2:検索値(入力した商品コード)
- B2:D100:範囲(商品マスタ全体)
- 2:範囲の左から2列目(商品名)を返す
- FALSE:完全一致で検索
別シートのデータを参照する
実務では検索先が別シートにあることがほとんどです。シート名のあとに「!」をつけて範囲を指定します。
=VLOOKUP(A2, マスタ!A:D, 3, FALSE)
シート名に空白が含まれる場合は、シングルクォーテーションで囲みます。
=VLOOKUP(A2, '商品 マスタ'!A:D, 3, FALSE)
別ブックのデータを参照する場合は、ブック名を角括弧で囲みます。
=VLOOKUP(A2, [顧客マスタ.xlsx]顧客情報!A:D, 4, FALSE)
絶対参照のポイント(F4キー)
VLOOKUPを下方向にコピーすると、範囲がズレることがあります。範囲は絶対参照で固定しましょう。
セル参照を選択した状態でF4キーを押すと「$」がつきます。
=VLOOKUP(A2, $B$2:$D$100, 2, FALSE)
検索値のA2は相対参照のまま、範囲だけ固定するのが正しい使い方です。
VLOOKUP関数の実務活用パターン
IFERROR関数と組み合わせてエラーを回避する
VLOOKUPは検索値が見つからないと#N/Aエラーを返します。資料の見栄えが悪いですし、後続の計算にも影響します。
IFERROR関数で囲めば、エラー時に任意の値を表示できます。
=IFERROR(VLOOKUP(A2, マスタ!$A:$D, 3, FALSE), "該当なし")
実務では「該当なし」や空文字「””」を指定するケースが多いです。
近似一致(TRUE)で価格帯・ランク判定する
売上金額からランクを判定する場面では、近似一致が便利です。
たとえば、ランク表が次のようになっているとします。
| 下限金額 | ランク |
|---|---|
| 0 | C |
| 100000 | B |
| 300000 | A |
| 500000 | S |
この表をF2:G5に置いたとします。B2の売上金額に対してランクを返すにはこう書きます。
=VLOOKUP(B2, $F$2:$G$5, 2, TRUE)
B2が250,000なら「B」が返ります。250,000以下の最大値は100,000なので、その行のランクが選ばれるわけです。
近似一致を使うときは、下限金額を必ず昇順で並べてください。
ワイルドカードで部分一致検索する
検索の型をFALSEにしたまま、ワイルドカードで部分一致検索ができます。
=VLOOKUP("*東京*", A2:C100, 2, FALSE)
「*」は任意の文字列、「?」は任意の1文字にマッチします。「東京」を含む最初のデータを探したいときに使えます。
セル参照を使う場合は「&」で連結します。
=VLOOKUP("*"&E2&"*", A2:C100, 2, FALSE)
複数条件で検索する(補助列の活用)
VLOOKUPは検索値をひとつしか指定できません。「部署」と「役職」の2条件で検索したい場合は、補助列を作りましょう。
補助列に2つの値を「&」で連結した値を入れます。
=A2&"-"&B2
VLOOKUPの検索値も同じように連結します。
=VLOOKUP(E2&"-"&F2, 補助列を含む範囲, 列番号, FALSE)
補助列を増やしたくない場合は、INDEX関数とMATCH関数の組み合わせも検討してください。
よくあるエラーと対処法
#N/Aエラー
「検索値が見つからない」という意味のエラーです。主な原因は次の4つです。
| 原因 | 確認ポイント | 対処法 |
|---|---|---|
| 値が存在しない | マスタ側に該当データがあるか | データを追加するか、IFERRORで対処 |
| データ型の不一致 | 数値と文字列が混在していないか | VALUE関数で統一 |
| 余分なスペース | 見えない空白が入っていないか | TRIM関数で除去 |
| 範囲がズレている | 絶対参照をつけ忘れていないか | F4キーで$を付与 |
#REF!エラー
列番号が範囲の列数を超えているときに出ます。
たとえば範囲がA:Cの3列なのに、列番号に4を指定した場合です。列を削除した直後にも起こりやすいエラーです。範囲と列番号の対応を見直してください。
間違った値が返る
エラーにはならないのに、期待と違う値が返る。これが一番やっかいなケースです。
最も多い原因は「検索の型を省略してTRUEになっているのに、データが昇順ソートされていない」パターンです。FALSEを明示すれば解決します。
もうひとつは範囲の最左列が検索対象と一致していないケースです。範囲の開始列を確認してみてください。
VLOOKUPの弱点と代替関数の使い分け
VLOOKUPは便利ですが、万能ではありません。弱点を知っておくと、場面に応じた関数選びがスムーズになります。
VLOOKUPの3つの制約
- 左方向に検索できない: 範囲の最左列でしか検索できません。検索値の左側にある列の値は取得できません
- 列番号がハードコード: 列の挿入や削除で番号がズレて壊れます
- 最初の一致しか返さない: 重複データがあっても、最初に見つかった1件だけが返ります
VLOOKUP / INDEX+MATCH / XLOOKUP 比較表
| 特徴 | VLOOKUP | INDEX+MATCH | XLOOKUP |
|---|---|---|---|
| 左方向検索 | 不可 | 可能 | 可能 |
| 列追加への耐性 | 弱い(番号ズレ) | 強い | 強い |
| エラー時の既定値 | IFERROR必要 | IFERROR必要 | 引数で指定可 |
| デフォルトの一致方式 | 近似一致(TRUE) | 完全一致(0指定) | 完全一致 |
| 必要なExcelバージョン | 全バージョン | 全バージョン | 2021以降 / 365 |
| 数式の読みやすさ | シンプル | やや複雑 | シンプル |
どの関数を選べばいい?
判断基準はシンプルです。
- Excel 2021 / 365を使っている → XLOOKUP関数を第一候補に。VLOOKUPの弱点をすべて解消しています
- 古いバージョンとの互換性が必要 → VLOOKUPで足りるならVLOOKUP。左方向検索が必要ならINDEX関数 + MATCH関数
- シンプルな右方向検索だけ → VLOOKUPで十分です
VLOOKUPは「古い関数」と言われることもありますが、多くの場面で今も問題なく使えます。無理に乗り換える必要はありません。
まとめ
VLOOKUPのポイントを振り返ります。
- 構文は
=VLOOKUP(検索値, 範囲, 列番号, 検索の型)の4引数 - 検索の型は省略せずFALSEを明示するのが安全
- 範囲の絶対参照とIFERRORの組み合わせは実務の必須テクニック
- #N/Aエラーは「データ型の不一致」や「余分なスペース」を疑う
- 左方向検索や列追加への耐性が必要ならXLOOKUPやINDEX+MATCHを検討
まずは基本の完全一致検索をマスターしましょう。そこからIFERRORやワイルドカードのテクニックを組み合わせてみてください。
関連記事
- ExcelのMATCH関数の使い方|検索値の位置を取得する方法
- ExcelのXLOOKUP関数の使い方|VLOOKUPとの違い・エラー対処まで解説
- INDEX関数の使い方
- IFERROR関数の使い方
- ExcelのTRIM関数の使い方|余分なスペースを一括削除する方法
- VALUE関数の使い方
- ExcelのSUBSTITUTE関数の使い方|文字列を置き換える方法
- アルファベット順 Excel関数一覧
- 機能別 Excel関数一覧
エラー値についてのまとめ記事
関数でエラーが発生した際に表示されるエラーの種類と対処方法は、以下の記事でまとめています。
