VLOOKUPで#N/Aが出る5つの原因と解決法【上から順に試せばOK】
「VLOOKUP書いたのに #N/A が出る…」
これ、Excelを覚えたての人がほぼ全員ぶつかる壁です。
でも安心してください。#N/A の原因は ほぼパターンが決まっています。
この記事は、
上から順に疑えば、原因が必ず1つに絞れる
という チェックリスト形式 で書いています。
読み終わるころには、自力で #N/A を解決できるようになります。
💡
#N/Aは「値が見つかりません」というExcelからのサインです。 「式が間違っている」のではなく、「探しに行ったけど見つけられなかった」状態です。
まず疑うべき3つの原因(これで9割解決します)
#N/A の原因の 9割 はこの3つに集約されます。
上から順番に確認 してください。
① データ型の不一致(文字列⇔数値)
一番多い原因がこれです。
症状
- 検索値(例:
"1001")と、表の中の値(例:1001)が 見た目は同じなのに一致しない - 元データをCSVや別システムから貼り付けたときに発生しがち
確認方法
セルを選択して、画面下のステータスバーを見てください。
- 数値なら「合計」が表示される
- 文字列なら「合計」が出ない(「データの個数」だけ)
または、セルの中身が 左寄せ=文字列、右寄せ=数値 が初期動作です。
解決方法
検索値が「文字列の数字」になっている場合、VALUE関数 で数値に変換できます。
=VLOOKUP(VALUE(A2), 商品マスタ!A:C, 2, FALSE)
逆に、表側が文字列で検索値が数値の場合は、検索値を &"" で文字列化します。
=VLOOKUP(A2&"", 商品マスタ!A:C, 2, FALSE)
📌 ポイント: どっちが文字列か分からないときは、両方のセルで
=ISNUMBER(A1)を試すと一発で分かります(TRUEなら数値、FALSEなら文字列)。文字列として保存された数値(緑の三角・左寄せ)が出る原因と直し方は 数式が計算されない・=SUMがそのまま表示される で詳しく解説しています。

② 見えない余白・改行が混じっている
「目視では同じなのに一致しない」場合、スペースや改行が混入している 可能性が高いです。
症状
- 検索値が
"商品A"なのに、表側が"商品A "(末尾に半角スペース) - 別システムからのコピペデータでよく発生
確認方法
セルをダブルクリックして、カーソルキーで末尾まで移動してみる。 余分な余白があると気づけます。
解決方法
TRIM関数(前後の余分なスペースを除去)と CLEAN関数(改行などの制御文字を除去)を組み合わせるのが鉄板です。
=VLOOKUP(TRIM(CLEAN(A2)), 商品マスタ!A:C, 2, FALSE)
ただし、これは 検索値側だけの対処 です。 表側にも余白がある場合は、表側を別の作業列でクリーンアップするか、表自体を整える必要があります。
📌 ポイント: TRIMは 半角スペースしか処理しません。全角スペース(
)が混じっている場合は、先にSUBSTITUTEで除去してからTRIMする必要があります。=VLOOKUP(TRIM(SUBSTITUTE(A2," ","")), 商品マスタ!A:C, 2, FALSE)※ SUBSTITUTEの第2引数は 全角スペース を入れてください。

③ 完全一致(FALSE)の指定漏れ
VLOOKUPの 第4引数 を省略している、または TRUE にしていると、近似一致モード になります。
症状
- 完全に一致するデータがあるのに
#N/Aが出る - もしくは「間違った値」が返ってくる(これも怖い)
確認方法
数式を確認してください。
=VLOOKUP(A2, 商品マスタ!A:C, 2) ← 第4引数なし(危険)
=VLOOKUP(A2, 商品マスタ!A:C, 2, TRUE) ← 近似一致(危険)
=VLOOKUP(A2, 商品マスタ!A:C, 2, FALSE) ← 完全一致(これが正解)
解決方法
第4引数に 必ず FALSE(または 0) を入れる癖をつけてください。
=VLOOKUP(A2, 商品マスタ!A:C, 2, FALSE)
📌 ポイント:
FALSEの代わりに0でも同じ意味で動きます。タイピングが楽なので0を使う人も多いです。

それでも直らないときの中級チェック
御三家で原因が特定できないときは、以下を疑います。
④ 検索値が表の「左端列」にない
VLOOKUPには 致命的な仕様 があります。
検索値は、必ず 検索範囲の一番左の列 にいなければならない
たとえば、商品マスタが A列:商品名 / B列:商品コード の並びになっていて、商品コードで検索したい場合、VLOOKUPでは 直接できません。
解決方法
- 表の列順を入れ替える(一番手っ取り早い)
- もしくは、後継関数の
XLOOKUPを使う(Excel 2021 / Microsoft 365)
=XLOOKUP(A2, 商品マスタ!B:B, 商品マスタ!A:A)
XLOOKUPは検索列と取得列を別々に指定できるので、左端列の制約がありません。古いExcelでXLOOKUPが使えない場合は、INDEX+MATCH で同じことができます。

⑤ 絶対参照($)の漏れ
数式を 下にコピーしたら、突然 #N/A が出始めた ケース。
これは検索範囲がズレているのが原因です(絶対参照と相対参照の使い分け も合わせてどうぞ)。
症状
=VLOOKUP(A2, 商品マスタ!A2:C100, 2, FALSE)
これを下にコピーすると、A2:C100 が A3:C101、A4:C102 …と どんどんズレていきます。
解決方法
検索範囲を 絶対参照 にします。
=VLOOKUP(A2, 商品マスタ!$A$2:$C$100, 2, FALSE)
または、もっと簡単に 列全体 を指定すればズレません。
=VLOOKUP(A2, 商品マスタ!A:C, 2, FALSE)

番外:エラーを「表示させたくない」とき
ここまでで原因が特定できないけど、とりあえずエラー表示を消したい ときは IFERROR を使います。
=IFERROR(VLOOKUP(A2, 商品マスタ!A:C, 2, FALSE), "")
これで #N/A の代わりに空白が表示されます。
⚠️ ただし、根本原因が消えるわけではありません。 「本当はマッチすべきデータがマッチしてない」状態を見逃すリスクがあるので、原因究明を諦める前の最終手段にしてください。
詳しい使い分け(
IFERRORとIFNAの違い・落とし穴)は別記事にまとめています: IFERROR の使い方と落とし穴【エラーを隠す前に読む完全ガイド】
まとめ:チェックリスト
| 順番 | 疑うこと | 解決の道具 |
|---|---|---|
| ① | データ型の不一致 | VALUE / &"" / ISNUMBER |
| ② | 見えない余白・改行 | TRIM / CLEAN / SUBSTITUTE |
| ③ | 完全一致の指定漏れ | 第4引数に FALSE |
| ④ | 左端列にない | 列の入れ替え / XLOOKUP |
| ⑤ | 絶対参照漏れ | $A$2:$C$100 または A:C |
この順番で確認すれば、ほぼ全ての #N/A が解決できます。
関連記事
- ピボットテーブルが思いどおりに集計できない【合計・個数・比率・更新を症状別に】
- Excelマクロ(VBA)が動かない・エラーが出るときの原因切り分け【症状別】
- 数式が計算されない・=SUMがそのまま表示される【3つの原因で切り分け】
- 絶対参照と相対参照の使い分け【$ と F4 キーで数式コピーがズレない】
- COUNTIF / COUNTIFS が動かない6つの原因と解決法【上から順に試せばOK】
- Excelショートカット厳選20選【明日から作業が倍速になる】
- IF関数の入れ子から卒業する5つの方法【パターン別に使い分け】
- INDEX+MATCH で VLOOKUP の弱点を克服する4つの場面【コピペで使える】
- SUMIF / SUMIFS が動かない6つの原因と解決法【上から順に試せばOK】
- IFERROR の使い方と落とし穴【エラーを隠す前に読む完全ガイド】
- Excelの主要エラー6種【症状→原因→解決の早見表】