エクセル迷子案内所
← 学習記事一覧

VLOOKUPで#N/Aが出る5つの原因と解決法【上から順に試せばOK】

公開: 2026-05-10更新: 2026-07-08
執筆: FMaker(エクセル迷子案内所 運営者)対応を想定: Microsoft 365 / Excel 2021最終事実確認: 2026-07-08

「VLOOKUP書いたのに #N/A が出る…」 これ、Excelを覚えたての人がほぼ全員ぶつかる壁です。

でも安心してください。#N/A の原因は ほぼパターンが決まっています

💡 #N/A は「値が見つかりません」というExcelからのサインです。 「式が間違っている」のではなく、「探しに行ったけど見つけられなかった」状態です。


症状

VLOOKUPで#N/Aが出る、正しいはずなのに一致しない、値があるのに見つからない——そんな状態になっている。

即答

VLOOKUPの#N/Aは「型不一致・余白・FALSE指定漏れ・左端列にない・絶対参照漏れ」の5パターンのどれかが原因で、上から順に確認すれば必ず特定できる。

なぜ起きるのか

VLOOKUPは検索範囲の左端列と検索値が「型・値・文字列ともに完全一致」したときだけ結果を返し、一致しなければ#N/Aを返す。

確認手順

エラーの症状から最初に確認すべき節へ進んでください。「あなたのケースはどれ?」で原因を絞れます。

  1. #N/Aが出る / 値があるはずなのに一致しない → 「① 型不一致」か「② 余白・改行」を確認
  2. 間違った値が返ってくる(#N/Aではない) → 「③ 完全一致(FALSE)の指定漏れ」を確認
  3. 下にコピーしたら突然#N/Aが出始めた → 「⑤ 絶対参照漏れ」を確認
  4. データはあるのに#N/Aが出る(上記以外) → 「④ 検索値が左端列にない」を確認

A列の商品コードが左寄せ(文字列)、D2の検索コードが右寄せ(数値)。見た目は同じ「1001」でも型が違うためE2が #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引数は 全角スペース を入れてください。

A2の「商品A 」末尾に半角スペースが入っているため、D2の「商品A」と一致せず E2 が #N/A になっている例(黄色ハイライトで余白入り行を強調)


③ 完全一致(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 を使う人も多いです。

第4引数を省略してVLOOKUPを書いたため近似一致モードになり、点数85に完全一致するデータが無いにもかかわらずエラーにならず、85以下の最大値である80の行の「A」が黙って返ってきている例(完全一致を期待していると想定外の結果になる)


現場のケース

【実務でこれが起きた場面】

販売管理シートで商品コードを使って商品マスタからカテゴリを引く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 で同じことができます

A列が商品名・B列が商品コードの並び。商品コード「1003」を検索キーにVLOOKUPすると、検索列(A列)に1003が無いため #N/A になっている例

📌 ポイント: この例の数式は戻り列(col_index_num)に 1 を指定していますが、そもそも検索キー(商品コード)がA列(検索対象の左端列)に存在しないため、戻り列が何番でも結果は #N/A のままです。「1 は何を意味しているのか」で混乱したら、まず「検索範囲の一番左の列に検索値があるか」を先に確認してください。


⑤ 絶対参照($)の漏れ

数式を下にコピーしたときに検索範囲がズレると#N/Aになる。検索範囲は絶対参照か列全体指定にする。

数式を 下にコピーしたら、突然 #N/A が出始めた ケース。 これは検索範囲がズレているのが原因です(絶対参照と相対参照の使い分け も合わせてどうぞ)。

症状

=VLOOKUP(A2, 商品マスタ!A2:C100, 2, FALSE)

これを下にコピーすると、A2:C100A3:C101A4:C102 …と どんどんズレていきます

解決方法

検索範囲を 絶対参照 にします。

=VLOOKUP(A2, 商品マスタ!$A$2:$C$100, 2, FALSE)

または、もっと簡単に 列全体 を指定すればズレません。

=VLOOKUP(A2, 商品マスタ!A:C, 2, FALSE)

絶対参照を付けずに数式を下にコピーした結果、E4の数式が =VLOOKUP(D4,A4:B7,2,FALSE) と参照範囲がズレてしまい、本来A2にある「りんご」が参照範囲外になって #N/A になっている例


番外:エラーを「表示させたくない」とき

IFERRORはすべてのエラーを隠すが、IFNAなら#N/Aだけを隠せるため、隠しすぎるリスクを抑えたい場合はIFNAが有効だ。

ここまでで原因が特定できないけど、とりあえずエラー表示を消したい ときは IFERROR を使います。

=IFERROR(VLOOKUP(A2, 商品マスタ!A:C, 2, FALSE), "")

これで #N/A の代わりに空白が表示されます。

⚠️ ただし、根本原因が消えるわけではありません。 「本当はマッチすべきデータがマッチしてない」状態を見逃すリスクがあるので、原因究明を諦める前の最終手段にしてください。

詳しい使い分け(IFERRORIFNA の違い・落とし穴)は別記事にまとめています: 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一枚に凝縮。印刷して手元に。

次に読む

よく読まれている

それでも解決しないときは

記事の手順を試しても直らない場合、特定の構成だけで起きるレアケースかもしれません。対話で原因を1つずつ切り分けるのが最短です。

AI案内人に相談する(無料・登録不要)→