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 キーで絶対参照に固定してください。
例:D2:G100 → 選択後 F4$D$2:$G$100

⚠️ よくあるエラーと対処法

#N/A エラー ― 最も多いトラブル

原因と対処チェックリスト
✅ 検索値の前後に 余分なスペース がない(=TRIM(A2) で確認)
✅ 検索値とキー列の データ型 が一致している(数値 vs 文字列)
✅ 検索値がキー列の 最左列 にある(VLOOKUPはキー列より左側を返せない)
✅ 検索方法を FALSE(完全一致)にしている
// エラーを非表示にしたい場合(IFERROR で囲む) =IFERROR(VLOOKUP(A2, $D$2:$G$100, 3, FALSE), "データなし")

#REF! エラー ― 列番号が範囲外

原因:第3引数の列番号が、検索範囲の列数を超えている。
例:範囲が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 が必須です。

📊 バージョン別の最適な検索関数

データテーブル
状況Excel 2016・2019Excel 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 への移行が最善策です。

🔗 関連記事