※本ページにはプロモーション(広告)が含まれています
【2026年最新版】ExcelのVLOOKUP・XLOOKUP関数の使い方・エラー解決完全ガイド
Excelを使った業務で、「別のシートにある商品名を自動で取得したい」「社員番号を入力したら氏名が表示されるようにしたい」という場面は多いはずです。そんなときに使うのがVLOOKUP関数です。ただ、使い方が少し複雑で、エラーが出て困っている方も少なくありません。
この記事では、VLOOKUPの基本的な使い方から引数の意味、よくあるエラーの解決方法、そして進化版のXLOOKUP関数との比較まで、実務に直結する形で丁寧に解説します。
- VLOOKUP関数の基本構文と引数の意味
- 実際の使用例(商品コードから商品名を取得する方法)
- 完全一致(FALSE)と近似一致(TRUE)の使い分け
- #N/A・#REF!・#VALUE!エラーの原因と対処法
- 絶対参照($記号)の正しい使い方
- XLOOKUP関数の使い方(Excel 2019以降・Microsoft 365対応)
- VLOOKUPとXLOOKUPの違いと比較
VLOOKUP関数とは
VLOOKUPは「Vertical LOOKUP(縦方向に検索)」の略で、表の左端の列でキーワードを検索し、その行にある別の列の値を返す関数です。Excelの中でも使用頻度が特に高い関数のひとつで、マスター管理や在庫管理、名簿検索など幅広い業務で活躍します。
VLOOKUPの基本構文
=VLOOKUP(検索値, 範囲, 列番号, 検索方法)
| 引数 | 説明 | 例 |
|---|---|---|
| 検索値 | 探したい値またはセル参照 | A2(商品コードが入ったセル) |
| 範囲 | 検索対象の表全体(左端列が検索対象) | $F$2:$H$100(マスターテーブル) |
| 列番号 | 範囲内で取得したい列の番号(左端=1) | 2(2列目の商品名を取得) |
| 検索方法 | FALSE=完全一致、TRUE=近似一致 | FALSE(通常はFALSEを指定) |
VLOOKUP実践例:商品コードから商品名を取得する
例として以下の表を想定します。
- A列: 注文リスト(商品コード)
- F列〜H列: マスターテーブル(F列:商品コード、G列:商品名、H列:単価)
A2に入力された商品コードをもとに、G列の商品名をB2に表示させる場合、B2に次の数式を入力します。
=VLOOKUP(A2, $F$2:$H$100, 2, FALSE)
この数式の意味は次のとおりです。
A2: A2セルの商品コードを検索値として使う$F$2:$H$100: マスターテーブル(F2からH100)で検索する($は絶対参照)2: 見つかった行の2列目(G列・商品名)を返すFALSE: 完全一致で検索する
完全一致(FALSE)と近似一致(TRUE)の違い
VLOOKUP関数の第4引数(検索方法)は、FALSEまたはTRUEを指定します。多くの場面ではFALSEを使いますが、それぞれの意味と使いどころを理解することが重要です。
FALSE(完全一致)
検索値と完全に一致するデータを探します。商品コードや社員番号のような「一意に特定できるキー」で検索する場合は必ずFALSEを指定します。一致するデータがない場合は#N/Aエラーが返ります。
TRUE(近似一致)
完全に一致しない場合に、検索値を超えない最大値を返します。使用する際は範囲の左端列が昇順に並んでいることが必須条件です。主に点数に応じた評価(0〜59点:C、60〜79点:B、80〜100点:Aなど)を参照するような「階段型の値の判定」に使います。
| 検索方法 | 一致条件 | 主な用途 | 注意点 |
|---|---|---|---|
| FALSE(0) | 完全一致のみ | コード検索・名簿検索 | 一致なしで#N/Aエラー |
| TRUE(1) | 超えない最大値 | 評価テーブル・送料計算 | 昇順並び替えが必須 |
よくあるエラーの原因と対処法
VLOOKUPでエラーが出て悩む方は多いです。主要なエラーとその対処法を解説します。
#N/Aエラー:検索値が見つからない
原因: 検索値がマスターテーブルの左端列に存在しない。または余分なスペースや文字コードの違いで一致しない。
対処法:
- TRIM関数で余分なスペースを除去する:
=VLOOKUP(TRIM(A2), $F$2:$H$100, 2, FALSE) - マスターテーブル側にそのコードが本当に存在するか確認する
- エラーを表示させたくない場合はIFERROR関数を組み合わせる:
=IFERROR(VLOOKUP(A2, $F$2:$H$100, 2, FALSE), "該当なし")
#REF!エラー:参照エラー
原因: 列番号(第3引数)が範囲内の列数より大きい。例えば3列しかない範囲に列番号「4」を指定した場合に発生します。
対処法: 列番号を範囲内の列数以下に修正する。
#VALUE!エラー:データ型の不一致
原因: 検索値が数値なのにマスターテーブル側が文字列として保存されている(またはその逆)。特にコードが「0001」などゼロ埋め形式の場合に起きやすいです。
対処法:
- 検索値をTEXT関数で文字列に変換:
=VLOOKUP(TEXT(A2,"0000"), $F$2:$H$100, 2, FALSE) - または数値を文字列として入力するセルの書式を「文字列」に設定する
絶対参照($)の使い方
数式を他のセルにコピーするとき、参照範囲がずれないようにするのが「絶対参照」です。VLOOKUP関数の第2引数(範囲)には必ず絶対参照を使います。
相対参照と絶対参照の違い
| 参照の種類 | 記述例 | コピー時の動作 |
|---|---|---|
| 相対参照 | F2:H100 | コピー先に応じてずれる |
| 行のみ絶対参照 | F$2:H$100 | 行はずれない、列はずれる |
| 列のみ絶対参照 | $F2:$H100 | 列はずれない、行はずれる |
| 絶対参照 | $F$2:$H$100 | コピーしてもずれない |
$記号はキーボードで直接入力するか、数式入力中に参照セルを選択した状態でF4キーを押すと自動で付きます(押すたびに絶対参照→行のみ絶対→列のみ絶対→相対参照と切り替わります)。
XLOOKUPとは(Excel 2019以降・Microsoft 365対応)
XLOOKUPはVLOOKUPの進化版として2019年以降のExcelに搭載された新しい検索関数です。VLOOKUPの弱点を多数解消しており、Microsoft 365を使っている場合は積極的に活用が推奨されます。
XLOOKUPの基本構文
=XLOOKUP(検索値, 検索範囲, 返す配列, [見つからない場合], [一致モード], [検索モード])
例として、A2の商品コードをF2:F100で検索して、G2:G100から商品名を返す場合は次のように書きます。
=XLOOKUP(A2, $F$2:$F$100, $G$2:$G$100, "該当なし")
VLOOKUPとXLOOKUPの比較表
| 比較項目 | VLOOKUP | XLOOKUP |
|---|---|---|
| 対応バージョン | 全バージョン(Excel 97以降) | Excel 2021・Microsoft 365 |
| 左列以外での検索 | 不可(必ず左端列が対象) | 可能(どの列でも検索列に指定可) |
| 右から左への検索 | 不可 | 可能 |
| 見つからない場合の処理 | IFERRORを別途組み合わせる必要あり | 第4引数で直接指定可能 |
| 複数列の返却 | 1列のみ | 複数列を同時に返せる |
| 列番号のずれリスク | あり(列挿入でずれる) | なし(範囲で指定するため) |
| 書きやすさ | 慣れれば問題なし | より直感的 |
XLOOKUPの主なメリット
- 左列縛りがない: VLOOKUPは必ず左端列で検索しますが、XLOOKUPは任意の列を検索列に指定できます
- 列挿入に強い: VLOOKUPは表に列を挿入すると列番号がずれてエラーになりますが、XLOOKUPは範囲で指定するためずれません
- エラー時の処理が簡単: 第4引数に代替テキストを書けばIFERROR不要
- 右から左への検索も可能: 通常は右方向の検索ですが、XLOOKUPは左方向への検索もできます
実務での活用例
在庫管理での活用
倉庫の在庫データ(商品コード・品名・在庫数・単価)をマスターシートに持ち、発注シートで商品コードを入力すると品名・単価が自動表示されるシステムをVLOOKUP(またはXLOOKUP)で簡単に構築できます。
名簿検索での活用
社員番号を入力すると氏名・所属部署・内線番号が自動入力されるフォームをVLOOKUPで作成できます。人事データとの連携にも便利です。
よくある質問(FAQ)
Q1. VLOOKUPで完全一致を指定しているのに#N/Aが出ます。原因は?
最も多い原因は、検索値またはマスターデータに見えないスペース・改行が混入していることです。TRIM関数で前後のスペースを除去するか、CLEAN関数で改行コードを除去してから検索してください。また、数値と文字列の型の違いも#N/Aの原因になります。
Q2. VLOOKUPで2つ以上の条件(例:商品コードかつ色)で検索できますか?
VLOOKUPは単一の検索値しか対応していません。複数条件で検索したい場合は、検索キーを結合した補助列を作る方法(例:A列とB列を結合してC列を作りそれをキーにする)か、INDEX関数とMATCH関数を組み合わせる方法が使われます。XLOOKUPでも複数条件への対応は工夫が必要です。
Q3. XLOOKUPはExcel 2019で使えますか?
XLOOKUPはExcel 2021またはMicrosoft 365(サブスクリプション版)で使えます。Excel 2019では使えません。Excel 2019ユーザーはVLOOKUPまたはINDEX+MATCH関数を使ってください。
Q4. テーブルに列を追加したらVLOOKUPの列番号がずれました。修正が大変です。
これはVLOOKUPの大きな弱点です。解決策は2つあります。①MATCH関数と組み合わせて列番号を動的に取得する(=VLOOKUP(A2, $F$2:$H$100, MATCH("商品名", $F$1:$H$1, 0), FALSE))、またはそもそもXLOOKUPに切り替える、です。
Q5. 同じ検索値が複数ある場合、VLOOKUPはどの値を返しますか?
VLOOKUPは上から検索して最初にヒットした行の値を返します。同じキーで複数レコードがある場合は最初の1件だけが取得されます。全件取得が必要な場合はFILTER関数(Microsoft 365)を使うか、VBAでの処理が必要です。
Q6. 数式をコピーしたら結果がずれました。なぜですか?
範囲の指定が相対参照になっているため、コピー先でずれています。範囲(第2引数)は必ず絶対参照($)を使うことが基本ルールです。F4キーを使って$を付けてください。
Q7. VLOOKUP関数は廃止されますか?
Microsoftは現時点でVLOOKUPを廃止する予定は発表していません。ただしMicrosoftはXLOOKUPの使用を推奨しており、新機能の追加もXLOOKUP中心です。既存のファイルはVLOOKUPのまま問題ありませんが、新規作成時はXLOOKUPを検討してください。
まとめ
VLOOKUPは覚えれば業務効率を大幅に向上させる強力な関数です。要点を整理すると次のとおりです。
- VLOOKUPは
=VLOOKUP(検索値, 範囲, 列番号, 検索方法)の4つの引数で動作する - 通常の検索は
FALSE(完全一致)を使う - 範囲には必ず絶対参照($)を付ける
- #N/Aはスペースや型の不一致、#REF!は列番号のオーバー、#VALUE!はデータ型不一致が主な原因
- Microsoft 365・Excel 2021ではXLOOKUPの方が柔軟で使いやすい
- IFERRORと組み合わせてエラー表示を制御するのが実務の定番
まずは簡単な商品コード検索から試してみて、慣れたら応用的な使い方にも挑戦してみてください。
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!