※本ページにはプロモーション(広告)が含まれています
Excelで「=VLOOKUP(A2,D:E,2,FALSE)」と入力したのに、結果が #N/A と表示されて困っていませんか?
#N/Aエラーは「Not Available(データなし)」の略で、検索値が見つからないことを意味します。しかし、実際には「データはあるのになぜか見つからない」というケースがほとんどです。
この記事では、VLOOKUPが#N/Aエラーになる5大原因と、それぞれの解決方法を初心者にもわかるよう丁寧に解説します。IFERROR関数でエラーを非表示にする方法や、VLOOKUPの後継関数XLOOKUPとの使い分けも紹介します。
- VLOOKUPが#N/Aになる5つの原因と具体的な対処法
- スペース・書式・データ型の違いによるエラーを直す方法
- IFERROR関数でエラーを「0」や「–」に置き換える方法
- XLOOKUP・INDEXMATCHとの比較
- 「確実に動くVLOOKUP」を書くためのコツ
VLOOKUPの基本をおさらい
まず、VLOOKUP関数の基本構文を確認しましょう。
=VLOOKUP(検索値, 範囲, 列番号, 検索方法)
| 引数 | 意味 | 例 |
|---|---|---|
| 検索値 | 探したいデータ | A2(例:「山田」) |
| 範囲 | 検索するテーブルの範囲 | D:F または $D$2:$F$100 |
| 列番号 | 取り出す列(範囲の左から何列目) | 2(2列目のデータを返す) |
| 検索方法 | FALSE=完全一致、TRUE=近似一致 | FALSE(ほぼ常にFALSE推奨) |
VLOOKUPは「検索値と完全に一致するデータを範囲の一番左の列から検索」します。一致するものが見つからないと#N/Aが返されます。
原因①:検索値に余分なスペースが含まれている
VLOOKUPのエラーで最も多い原因がスペース(空白)の混入です。「山田 太郎」(全角スペースあり)と「山田太郎」は、見た目では気づきにくいですが、Excelは別のデータとして扱います。
見分け方
セルをクリックして数式バーを確認すると、末尾や先頭にスペースがあるかどうかわかります。または次の数式でスペースの有無を確認できます。
=LEN(A2)=LEN(TRIM(A2))
FALSEが返れば、A2にスペースが含まれています。
解決方法:TRIM関数でスペースを除去する
Step 1:TRIM関数を使ってスペースを除去した値でVLOOKUPを行います。
=VLOOKUP(TRIM(A2), D:E, 2, FALSE)
Step 2:参照先のデータにもスペースが混入している可能性があります。その場合は、データ側を新しい列にTRIM処理してから使うか、以下のように両方をTRIMします。
より確実な方法として、検索列全体をTRIMした補助列を作成し、そこをVLOOKUPの範囲に指定する方法もあります。
一括修正する方法
Step 1:空いているセルに =TRIM(D2) と入力します。
Step 2:下までコピーして、TRIMされた値の列を作成します。
Step 3:その列をコピーして「値のみ貼り付け」します。
Step 4:元の列と入れ替えます。
原因②:データの型が違う(数値と文字列の混在)
たとえば、商品コードが検索値では「数値の123」なのに、参照テーブルでは「文字列の”123″」になっている場合、見た目は同じでもExcelが異なるデータとして判断するためエラーになります。
見分け方
- セルが左揃えなら「文字列」として保存されています
- セルが右揃えなら「数値」として保存されています
- 文字列の数値セルには左上に緑の三角形が表示されることがあります
解決方法A:数値を文字列に変換してVLOOKUP
=VLOOKUP(TEXT(A2,"0"), D:E, 2, FALSE)
解決方法B:文字列を数値に変換してVLOOKUP
=VLOOKUP(VALUE(A2), D:E, 2, FALSE)
または検索値に1を掛けることで数値に変換できます。
=VLOOKUP(A2*1, D:E, 2, FALSE)
解決方法C:参照データを一括で数値変換
Step 1:空白セルに「1」を入力してコピーします。
Step 2:文字列になっている数値のセル範囲を選択します。
Step 3:右クリック→「形式を選択して貼り付け」→「乗算」を選択してOKをクリックします。
原因③:参照範囲の指定ミス(検索列が範囲の左端にない)
VLOOKUPには「検索するのは必ず範囲の一番左の列」というルールがあります。これを知らずに範囲を指定すると、いつまでも正しく動作しません。
よくあるミスの例
商品名(A列)で検索して価格(B列)を取り出したいのに、範囲を「B:C」と指定してしまうケースです。この場合、B列を検索してC列の値を取り出そうとしますが、実際に探したい商品名はA列にあるためエラーになります。
解決方法:範囲の一番左に検索列が来るように指定する
// 誤り:商品名がA列にあるのにB:Cを範囲指定
=VLOOKUP(A2, B:C, 2, FALSE) ← NG
// 正しい:A列(商品名)を含む範囲を指定
=VLOOKUP(A2, A:B, 2, FALSE) ← OK
VLOOKUPで「検索値で検索した列の左にあるデータは取り出せません」。左側のデータを取り出したい場合はINDEX+MATCH関数またはXLOOKUP関数を使いましょう。
原因④:列番号の指定ミス
列番号は「範囲の何列目か」を指定します。範囲を「A:C」と指定した場合、A列=1、B列=2、C列=3です。Excelのシート上の列番号ではない点に注意が必要です。
よくあるミスの例
// 範囲がD:Fのとき
=VLOOKUP(A2, D:F, 2, FALSE)
// → D列=1, E列=2, F列=3
// 列番号2はE列のデータが返される
解決方法:MATCH関数で列番号を自動取得する
ヘッダー行がある場合、MATCH関数で列番号を動的に取得するとミスが減ります。
=VLOOKUP(A2, D:G, MATCH("価格", D1:G1, 0), FALSE)
これで「価格」という列ヘッダーの位置を自動的に特定して列番号として使います。
原因⑤:検索方法がTRUE(近似一致)になっている
VLOOKUPの第4引数(検索方法)をTRUEまたは省略すると「近似一致」モードになります。近似一致では、参照範囲の一列目が昇順に並んでいないと正しく動作しません。
誤動作のパターン
- データが並び替えられていないのにTRUEを指定している
- 第4引数を省略している(省略するとTRUEになる)
解決方法:必ずFALSEを指定する
// 完全一致(推奨)
=VLOOKUP(A2, D:E, 2, FALSE)
// または 0 でも同じ意味
=VLOOKUP(A2, D:E, 2, 0)
完全一致(FALSE)を指定することで、ソートに依存せず正確な検索ができます。日常業務では基本的に常にFALSEを指定すると覚えておきましょう。
IFERROR関数で#N/Aエラーを非表示にする方法
上記の修正ですべてのエラーを解消するのが理想ですが、「検索値がない場合は空欄にしたい」「エラーの代わりに0や「–」を表示したい」という場合はIFERROR関数を使います。
基本的な書き方
=IFERROR(VLOOKUP(A2, D:E, 2, FALSE), "")
→ エラーの場合は空欄を表示
=IFERROR(VLOOKUP(A2, D:E, 2, FALSE), "該当なし")
→ エラーの場合は「該当なし」と表示
=IFERROR(VLOOKUP(A2, D:E, 2, FALSE), 0)
→ エラーの場合は0を表示
IFERRORは#N/A以外のエラー(#VALUE!、#REF!など)もすべて非表示にします。データ入力ミスや範囲エラーも隠れてしまうため、まず原因を修正してからIFERRORを使うことを推奨します。
IFNA関数を使う(#N/Aだけを対処)
Excel 2013以降では、#N/Aのみを対象にしたIFNA関数が使えます。他のエラーは隠さないため、より安全です。
=IFNA(VLOOKUP(A2, D:E, 2, FALSE), "該当なし")
VLOOKUPの限界と代替関数
VLOOKUPでできないこと
- ❌ 検索列より左側のデータを取り出す
- ❌ 複数条件での検索
- ❌ 列を追加・削除すると列番号がずれる
- ❌ 最後に一致する値を取得する(最初の一致のみ)
INDEX+MATCH関数(VLOOKUPの上位互換)
左方向の検索も可能な柔軟な組み合わせです。
=INDEX(B:B, MATCH(A2, C:C, 0))
→ C列でA2を検索し、対応するB列の値を返す(左方向検索が可能)
XLOOKUP関数(Excel 2021・Microsoft 365)
Microsoft 365と最新のExcelでは、VLOOKUPの後継にあたるXLOOKUP関数が使えます。
=XLOOKUP(A2, D:D, E:E, "該当なし")
| 機能 | VLOOKUP | XLOOKUP |
|---|---|---|
| 左方向の検索 | ❌ 不可 | ✅ 可能 |
| エラー時の値指定 | IFERRORが必要 | ✅ 第4引数で直接指定 |
| 列追加時のズレ | 列番号がズレる | ✅ 参照列指定のためズレない |
| 古いExcelとの互換性 | ✅ Excel 2003〜 | ❌ 2021以降・Microsoft 365のみ |
古いExcelとの互換性が必要な場合はVLOOKUPまたはINDEX+MATCHを使い、Microsoft 365環境では積極的にXLOOKUPへ移行するとよいでしょう。
「確実に動くVLOOKUP」を書くためのコツ5選
コツ①:第4引数は必ずFALSEを指定する
=VLOOKUP(A2, $D$2:$E$100, 2, FALSE)
FALSEを省略しない習慣をつけましょう。
コツ②:範囲は絶対参照にする
数式をコピーしたとき参照範囲がずれないよう、$D$2:$E$100 のように絶対参照(Fキーで切り替え)にします。
コツ③:TRIM+VLOOKUP でスペース問題を防ぐ
=IFERROR(VLOOKUP(TRIM(A2), $D$2:$E$100, 2, FALSE), "該当なし")
コツ④:データ入力規則でコードの書式を統一する
「データ」タブ→「データの入力規則」で、コード列に入力できる値の形式(数値のみ、文字列のみ等)を制限しておくと、型の不一致エラーを根本から防げます。
コツ⑤:テーブル機能と組み合わせる
参照範囲をExcelの「テーブル」(Ctrl+T)に変換すると、行が追加されても自動的に範囲が拡張されます。
=VLOOKUP(A2, テーブル1[#すべて], 2, FALSE)
よくある質問(FAQ)
Q1:VLOOKUPをコピーして貼り付けたら急に#N/Aになった。
A:参照範囲が相対参照になっていて、コピー時にずれた可能性が高いです。範囲を$D$2:$E$100のように絶対参照($を付ける)にしてから再度コピーしてください。
Q2:一部の行は正しく表示されているのに、特定の行だけ#N/Aになる。
A:その行の検索値だけスペースが混入しているか、データ型が違う可能性があります。エラーが出ているセルの検索値をTRIM・VALUE・TEXTで処理して試してください。
Q3:数字を検索しているのに#N/Aになる。
A:参照テーブルの数値が文字列として保存されているか、または逆(検索値が文字列で参照テーブルが数値)の可能性があります。左上の緑の三角形が表示されていたら文字列です。
Q4:VLOOKUP関数を使わずに重複を探したい。
A:COUNTIF関数で参照範囲に検索値がいくつあるかカウントする方法があります。=COUNTIF(D:D, A2)が0なら一致なし(VLOOKUPの#N/Aと同じ状態)です。
Q5:VLOOKUPで複数の列を一度に取り出せますか?
A:VLOOKUPは1回に1列しか取り出せませんが、Microsoft 365ではXLOOKUPを使うと複数列を一括取得できます。また、列番号をCOLUMN関数で動的にして横にコピーする方法もあります。
Q6:XLOOKUP関数はExcel 2019で使えますか?
A:XLOOKUP関数はExcel 2021以降とMicrosoft 365でのみ使えます。Excel 2019では使用できないため、VLOOKUP + IFERROR またはINDEX + MATCHを使ってください。
Q7:#N/Aではなく#VALUE!エラーが出る。
A:#VALUE!は数値と文字列の型が違う場合などに出ます。検索値や参照範囲のデータ型を確認してください。IFERRORで包んでもエラーが続く場合は、数式の構文ミスも疑ってください。
Q8:大量のデータでVLOOKUPが遅い。
A:全列(D:E)を範囲指定すると計算が遅くなります。$D$2:$E$1000のように実データ範囲だけを指定するか、テーブル機能を使うと改善します。Microsoft 365ではXLOOKUPが計算効率も優れています。
まとめ:VLOOKUPの#N/Aエラー対処チェックリスト
- 検索値や参照列にスペースが混入していないか → TRIM関数で解決
- 数値と文字列の型の不一致がないか → VALUE/TEXT関数で解決
- VLOOKUPの範囲の左端が検索列になっているか → 範囲を見直す
- 列番号が正しいか(シートの列番号ではなく範囲の左から数えた番号)
- 第4引数がFALSE(完全一致)になっているか
VLOOKUPの#N/Aエラーは、原因さえわかれば簡単に解決できます。この記事のチェックリストを参考に、まずスペースの混入→データ型の確認→範囲の指定順に確認してみてください。
また、Microsoft 365・Excel 2021をお使いの方は、この機会にVLOOKUPからXLOOKUPへの移行も検討してみてください。より直感的で、VLOOKUPの制限事項のほとんどが解消されています。
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!