VLOOKUPで#N/Aが出る5つの原因と解決法【上から順に試せばOK】
「VLOOKUP書いたのに #N/A が出る…」
これ、Excelを覚えたての人がほぼ全員ぶつかる壁です。
でも安心してください。#N/A の原因は ほぼパターンが決まっています。
💡
#N/Aは「値が見つかりません」というExcelからのサインです。 「式が間違っている」のではなく、「探しに行ったけど見つけられなかった」状態です。
症状
VLOOKUPで#N/Aが出る、正しいはずなのに一致しない、値があるのに見つからない——そんな状態になっている。
即答
VLOOKUPの#N/Aは「型不一致・余白・FALSE指定漏れ・左端列にない・絶対参照漏れ」の5パターンのどれかが原因で、上から順に確認すれば必ず特定できる。
なぜ起きるのか
VLOOKUPは検索範囲の左端列と検索値が「型・値・文字列ともに完全一致」したときだけ結果を返し、一致しなければ#N/Aを返す。
確認手順
エラーの症状から最初に確認すべき節へ進んでください。「あなたのケースはどれ?」で原因を絞れます。
- #N/Aが出る / 値があるはずなのに一致しない → 「① 型不一致」か「② 余白・改行」を確認
- 間違った値が返ってくる(#N/Aではない) → 「③ 完全一致(FALSE)の指定漏れ」を確認
- 下にコピーしたら突然#N/Aが出始めた → 「⑤ 絶対参照漏れ」を確認
- データはあるのに#N/Aが出る(上記以外) → 「④ 検索値が左端列にない」を確認

まず疑うべき3つの原因(これで9割解決します)
「型不一致・余白・FALSE省略」の3パターンが原因の9割を占める。まずこの順で確認する。
#N/A の原因の 9割 はこの3つに集約されます。
上から順番に確認 してください。
① データ型の不一致(文字列⇔数値)
条件と条件範囲の型(文字列⇔数値)が違うと、見た目が同じでも一致判定が失敗し#N/Aになる。
一番多い原因がこれです。
症状
- 検索値(例:
"1001")と、表の中の値(例:1001)が 見た目は同じなのに一致しない - 元データをCSVや別システムから貼り付けたときに発生しがち
確認方法
セルを選択して、画面下のステータスバーを見てください(表示項目が既定のままの場合)。
- 数値なら「合計」が表示される
- 文字列なら「合計」が出ない(「データの個数」だけ)
※ ステータスバーの表示項目は右クリックでカスタマイズできるため、環境によっては見え方が異なることがあります。判断に迷ったら次の「左寄せ/右寄せ」を優先して確認してください。
または、セルの中身が 左寄せ=文字列、右寄せ=数値 が初期動作です。
解決方法
検索値が「文字列の数字」になっている場合、VALUE関数 で数値に変換できます。
=VLOOKUP(VALUE(A2), 商品マスタ!A:C, 2, FALSE)
逆に、表側が文字列で検索値が数値の場合は、検索値を &"" で文字列化します。
=VLOOKUP(A2&"", 商品マスタ!A:C, 2, FALSE)
📌 ポイント: どっちが文字列か分からないときは、両方のセルで
=ISNUMBER(A1)を試すと一発で分かります(TRUEなら数値、FALSEなら文字列)。文字列として保存された数値(緑の三角・左寄せ)が出る原因と直し方は 数式が計算されない・=SUMがそのまま表示される で詳しく解説しています。
② 見えない余白・改行が混じっている
末尾スペースや改行が混入すると完全一致に失敗し、#N/Aが出る。
「目視では同じなのに一致しない」場合、スペースや改行が混入している 可能性が高いです。
症状
- 検索値が
"商品A"なのに、表側が"商品A "(末尾に半角スペース) - 別システムからのコピペデータでよく発生
確認方法
セルをダブルクリックして、カーソルキーで末尾まで移動してみる。 余分な余白があると気づけます。
解決方法
TRIM関数(前後の余分なスペースを除去)と CLEAN関数(改行などの制御文字を除去)を組み合わせるのが鉄板です。
=VLOOKUP(TRIM(CLEAN(A2)), 商品マスタ!A:C, 2, FALSE)
ただし、これは 検索値側だけの対処 です。 表側にも余白がある場合は、表側を別の作業列でクリーンアップするか、表自体を整える必要があります。
📌 ポイント: TRIMは 半角スペースしか処理しません。全角スペース(
)が混じっている場合は、先にSUBSTITUTEで全角スペースを空文字に置き換えて除去し、そのうえで残っている前後の半角スペースをTRIMで除去する、という2段構えにする必要があります。=VLOOKUP(TRIM(SUBSTITUTE(A2," ","")), 商品マスタ!A:C, 2, FALSE)※ SUBSTITUTEの第2引数は 全角スペース を入れてください。

③ 完全一致(FALSE)の指定漏れ
第4引数のFALSEを省略すると近似一致モードになり、#N/A、またはもっとひどいことに、#N/Aよりも気づきにくい誤った値が返ってくる。
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を使っていた。テスト時は全件正しく返ってきていたが、本番データに切り替えた数か月後に一部の商品でカテゴリが誤っていると報告があった。確認するとFALSEが抜けた近似一致モードになっており、商品マスタが昇順で並んでいたため大半のコードは近似一致でたまたま正しい結果を返していた。しかし一部のコードが昇順の「切れ目」に当たる区間に存在したため、1つ前のカテゴリグループを誤って返していた。FALSEなし近似一致の怖さは「正しく動いているように見える」ことで、誤りの発見が数か月後になった。Microsoft 365への移行を機にXLOOKUPへ全切り替えしたことで、左端列の制約もFALSE省略問題も同時に解消した。VLOOKUPを書くなら第4引数の「FALSE」を入力するまでが1セットと考えるのが実務での鉄則だ。
それでも直らないときの中級チェック
御三家で絞れない場合は、左端列の制約と絶対参照漏れの2点を確認する。
御三家で原因が特定できないときは、以下を疑います。
④ 検索値が表の「左端列」にない
VLOOKUPは検索範囲の一番左の列にしか検索値を指定できない。それ以外の列で検索したい場合はXLOOKUPかINDEX+MATCHを使う。
VLOOKUPには 致命的な仕様 があります。
検索値は、必ず 検索範囲の一番左の列 にいなければならない
たとえば、商品マスタが A列:商品名 / B列:商品コード の並びになっていて、商品コードで検索したい場合、VLOOKUPでは 直接できません。
解決方法
- 表の列順を入れ替える(一番手っ取り早い)
- もしくは、後継関数の
XLOOKUPを使う(Excel 2021 / Microsoft 365)
=XLOOKUP(A2, 商品マスタ!B:B, 商品マスタ!A:A)
XLOOKUPは検索列と取得列を別々に指定できるので、左端列の制約がありません。古いExcelでXLOOKUPが使えない場合は、INDEX+MATCH で同じことができます。

📌 ポイント: この例の数式は戻り列(
col_index_num)に1を指定していますが、そもそも検索キー(商品コード)がA列(検索対象の左端列)に存在しないため、戻り列が何番でも結果は#N/Aのままです。「1は何を意味しているのか」で混乱したら、まず「検索範囲の一番左の列に検索値があるか」を先に確認してください。
⑤ 絶対参照($)の漏れ
数式を下にコピーしたときに検索範囲がズレると#N/Aになる。検索範囲は絶対参照か列全体指定にする。
数式を 下にコピーしたら、突然 #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はすべてのエラーを隠すが、IFNAなら#N/Aだけを隠せるため、隠しすぎるリスクを抑えたい場合はIFNAが有効だ。
ここまでで原因が特定できないけど、とりあえずエラー表示を消したい ときは IFERROR を使います。
=IFERROR(VLOOKUP(A2, 商品マスタ!A:C, 2, FALSE), "")
これで #N/A の代わりに空白が表示されます。
⚠️ ただし、根本原因が消えるわけではありません。 「本当はマッチすべきデータがマッチしてない」状態を見逃すリスクがあるので、原因究明を諦める前の最終手段にしてください。
詳しい使い分け(
IFERRORとIFNAの違い・落とし穴)は別記事にまとめています: IFERROR の使い方と落とし穴【エラーを隠す前に読む完全ガイド】
まとめ:チェックリスト
上から順に確認すれば、ほぼ全ての#N/Aが解決できる。下にコピーするなら絶対参照も必ずセットで確認する。
| 順番 | 疑うこと | 解決の道具 |
|---|---|---|
| ① | データ型の不一致 | VALUE / &"" / ISNUMBER |
| ② | 見えない余白・改行 | TRIM / CLEAN / SUBSTITUTE |
| ③ | 完全一致の指定漏れ | 第4引数に FALSE |
| ④ | 左端列にない | 列の入れ替え / XLOOKUP |
| ⑤ | 絶対参照漏れ | $A$2:$C$100 または A:C |
この順番で確認すれば、ほぼ全ての #N/A が解決できます。
無料ダウンロード・登録不要のメールだけ
Excelの「詰まりどころ」早見表を1枚に。
COUNTIF・SUMIF・#N/A・エラー6種の《症状→原因→即対応》をA4一枚に凝縮。印刷して手元に。
次に読む
Excelが重い・遅い・応答なしになる原因と対処【症状別に切り分け】
Excelを開くのに時間がかかる、スクロールがカクつく、保存が終わらない、応答なしで固まる…そんな重さの原因は「ファイル肥大/計算過負荷/描画過負荷」の3系統。使用範囲肥大・条件付き書式の重複・揮発性関数・画像埋め込み・.xls形式などを症状別に切り分けて、初心者でもできる対処法を1つずつ順に紹介します。
XLOOKUPへの乗り換えガイド+動かない・#NAME?・#SPILL!の直し方【VLOOKUPの上位互換】
XLOOKUPはVLOOKUPの上位互換。既定で完全一致・左方向も検索可・列番号指定不要・見つからない時のメッセージまで1本で書ける。乗り換え方と、#NAME?(バージョン非対応)・#SPILL!(書き出し先が空いていない)が出た時の直し方を、症状別に確認手順で解説します。
Excelマクロのはじめかた|「そもそも何?」から最初の一歩までを5分で
Excelマクロって結局なに? VBAと同じ? 何が自動化できるの? ──触ったことが無い人向けに、マクロの正体・自動化できる身近な例・コードを書かずに始める2つの方法(AIに頼む/操作を録る)まで、最低限の安心ごとと一緒に5分で案内します。