VLOOKUP完全ガイド ― 基本から「使ってはいけない場面」まで
Excelユーザーなら必ず知っておくべき検索関数の定番。XLOOKUP が使えない Excel 2016・2019 環境でも確実に活用でき、かつ「落とし穴」を把握することがプロへの第一歩。
💡 VLOOKUPの基本構文
=VLOOKUP(検索値, 検索範囲, 列番号, 検索方法)
| 引数 | 役割 | よくある値 |
|---|---|---|
| 検索値 | 探したいキー(IDや名前など) | セル参照(例:A2) |
| 検索範囲 | 検索対象の表全体(左端列がキー列) | $D$2:$G$100(絶対参照推奨) |
| 列番号 | 検索範囲の左から何列目の値を返すか | 2・3・4 など整数 |
| 検索方法 | FALSE=完全一致 / TRUE=近似一致 | ほぼ常に FALSE(0)を使う |
基本例:社員IDから部署名を取得
// A2に社員ID、D列:G列にマスターテーブルがある場合
=VLOOKUP(A2, $D$2:$G$100, 3, FALSE)
💡 検索範囲は必ず絶対参照($)にする
数式を下にコピーしたとき範囲がずれないよう、F4 キーで絶対参照に固定してください。
例:
数式を下にコピーしたとき範囲がずれないよう、F4 キーで絶対参照に固定してください。
例:
D2:G100 → 選択後 F4 → $D$2:$G$100
⚠️ よくあるエラーと対処法
#N/A エラー ― 最も多いトラブル
原因と対処チェックリスト
✅ 検索値の前後に 余分なスペース がない(
✅ 検索値とキー列の データ型 が一致している(数値 vs 文字列)
✅ 検索値がキー列の 最左列 にある(VLOOKUPはキー列より左側を返せない)
✅ 検索方法を
✅ 検索値の前後に 余分なスペース がない(
=TRIM(A2) で確認)✅ 検索値とキー列の データ型 が一致している(数値 vs 文字列)
✅ 検索値がキー列の 最左列 にある(VLOOKUPはキー列より左側を返せない)
✅ 検索方法を
FALSE(完全一致)にしている
// エラーを非表示にしたい場合(IFERROR で囲む)
=IFERROR(VLOOKUP(A2, $D$2:$G$100, 3, FALSE), "データなし")
#REF! エラー ― 列番号が範囲外
原因:第3引数の列番号が、検索範囲の列数を超えている。
例:範囲が4列(D〜G)なのに列番号に
対処:COLUMNS関数で列数を確認してから列番号を設定する。
例:範囲が4列(D〜G)なのに列番号に
5 を指定 → #REF!対処:COLUMNS関数で列数を確認してから列番号を設定する。
🚫 VLOOKUPの「致命的な弱点」3つ
| 弱点 | 具体的な問題 | 解決策 |
|---|---|---|
| ①キー列より左側を返せない | 商品名(C列)で検索して商品コード(A列)を取りたい → 不可 | INDEX+MATCHを使う |
| ②列の挿入・削除で壊れる | 列番号を 3 と固定していると、列を追加した瞬間にズレる |
INDEX+MATCH は列挿入に強い |
| ③大量データで遅い | 1万行超でIFERRORを組み合わせると再計算が重くなる | MATCH で位置取得・INDEX で値取得に分割するか XLOOKUPへ移行 |
📗 Excel 2016・2019ユーザーへ
VLOOKUPの弱点①②を解決するのが INDEX+MATCH です。
特に「キー列より左を参照したい」「列の挿入でズレたくない」ケースでは INDEX+MATCH が必須です。
VLOOKUPの弱点①②を解決するのが INDEX+MATCH です。
特に「キー列より左を参照したい」「列の挿入でズレたくない」ケースでは INDEX+MATCH が必須です。
📊 バージョン別の最適な検索関数
| 状況 | Excel 2016・2019 | Excel 2021・2024・365 |
|---|---|---|
| 右方向の単純な検索 | VLOOKUP(使えるが弱点あり) | XLOOKUP(推奨) |
| 左方向の検索・列挿入に強い | INDEX+MATCH(推奨) | XLOOKUP |
| 複数条件の検索 | INDEX+MATCH+結合キー列 | XLOOKUP(配列で対応) |
| 複数行の抽出(全件取得) | VLOOKUPでは不可 FILTER代替テクニック |
FILTER関数(簡単) |
🔧 よく使う応用パターン
① 複数列を同時に取得する(別々にVLOOKUPを書く)
// 氏名・部署・役職を同時に取得(列番号を変えて3つ書く)
B2: =VLOOKUP($A2, $マスタ.$A:$D, 2, FALSE) // 氏名
C2: =VLOOKUP($A2, $マスタ.$A:$D, 3, FALSE) // 部署
D2: =VLOOKUP($A2, $マスタ.$A:$D, 4, FALSE) // 役職
💡 検索値のセル($A2)は列だけ固定($A)、行は変動(2)にすると DOWN コピーが楽になります。
② 別シートのマスターを参照する
=VLOOKUP(A2, マスタ!$A:$D, 3, FALSE)
// または名前付き範囲を使う(可読性UP)
=VLOOKUP(A2, 社員マスタ, 3, FALSE)
③ 近似一致(TRUE)の正しい使い方 ― 等級判定
// 点数から評価を返す(テーブルは昇順に並べること!)
// A列:基準点(0,60,70,80,90)、B列:評価(D,C,B,A,S)
=VLOOKUP(得点, $A$1:$B$5, 2, TRUE)
⚠️ TRUE(近似一致)はテーブルを必ず昇順に並べる
並べ替えをしないと正しい結果が返りません。ほとんどの検索では
並べ替えをしないと正しい結果が返りません。ほとんどの検索では
FALSE(完全一致)を使いましょう。
📗 次のステップ(旧バージョン向け)
VLOOKUPの弱点を克服するには INDEX+MATCH への移行が最善策です。