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

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

公開: 2026-05-10更新: 2026-05-12

「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列の商品コードが左寄せ(文字列)、D2の検索コードが右寄せ(数値)。見た目は同じ「1001」でも型が違うためE2が #N/A になっている


② 見えない余白・改行が混じっている

「目視では同じなのに一致しない」場合、スペースや改行が混入している 可能性が高いです。

症状

  • 検索値が "商品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引数は 全角スペース を入れてください。

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


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

第4引数を省略してVLOOKUPを書いたため近似一致モードになり、点数85に対して本来「A」ランクのはずが「C」(60以上のグループ)が返ってしまっている例


それでも直らないときの中級チェック

御三家で原因が特定できないときは、以下を疑います。

④ 検索値が表の「左端列」にない

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 になっている例


⑤ 絶対参照($)の漏れ

数式を 下にコピーしたら、突然 #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) と参照範囲がズレてしまい、「ぶどう」が範囲外で #N/A になっている例


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

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

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

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

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

詳しい使い分け(IFERRORIFNA の違い・落とし穴)は別記事にまとめています: IFERROR の使い方と落とし穴【エラーを隠す前に読む完全ガイド】


まとめ:チェックリスト

順番疑うこと解決の道具
データ型の不一致VALUE / &"" / ISNUMBER
見えない余白・改行TRIM / CLEAN / SUBSTITUTE
完全一致の指定漏れ第4引数に FALSE
左端列にない列の入れ替え / XLOOKUP
絶対参照漏れ$A$2:$C$100 または A:C

この順番で確認すれば、ほぼ全ての #N/A が解決できます。

関連記事

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

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

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