「確かにデータはあるはずなのに、VLOOKUPが#N/Aを返してくる…」。Excelで関数を使い始めた人がほぼ必ずぶつかる壁が、この#N/Aエラーです。

#N/Aは「Not Available(該当する値が見つかりません)」という意味。つまりExcelが「探したけど見つからなかったよ」と言っているわけですが、目で見ると値はちゃんとあるのに出るからタチが悪い。

この記事では、2026年3月時点の情報をもとに、VLOOKUPで「あるのに#N/A」になる"見えない原因"5つと、IFERROR関数・XLOOKUP関数を使った解決方法をわかりやすく解説します。Excel初心者の方でも手順どおりに進めれば解消できるので、ぜひ試してみてください。

#N/Aエラーって何?VLOOKUPが「見つからない」と言う理由

まず基本をおさらいしましょう。VLOOKUPは「指定した範囲の左端列から検索値を探し、見つかった行の指定列の値を返す」関数です。

書式はこう:

=VLOOKUP(検索値, 範囲, 列番号, 検索方法)

この検索値が範囲の左端列で見つからないと、Excelは#N/Aを返します。ざっくり言うと「探しものが見つかりません」エラーですね。

「いやいや、値はあるでしょ?」と思うかもしれませんが、人間の目には同じに見えても、Excelにとっては別物というケースが山ほどあります。以下の5つが代表的な原因です。

原因1:セルの前後に見えないスペースが入っている

一番多い原因がコレ。ぱっと見は同じ「A001」でも、実はセルの先頭や末尾に半角スペース全角スペースが紛れ込んでいるケースです。

他のシステムからコピペしたデータや、CSVファイルを取り込んだデータに起きやすい現象です。

確認方法

セルをダブルクリックして編集モードにし、文字の前後にカーソルを動かしてみましょう。スペースがあればカーソルが1文字分動きます。

もっと確実なのはLEN関数で文字数を比較する方法。たとえば「A001」は4文字のはずなのに=LEN(A2)が5を返したら、どこかにスペースが潜んでいます。

解決方法:TRIM関数で除去する

TRIM関数は前後の余分なスペースを取り除く関数です。VLOOKUPの中に組み込んで使います。

=VLOOKUP(TRIM(D2), A2:B100, 2, FALSE)

検索される側(範囲の左端列)にもスペースがある場合は、あらかじめ作業列を作って=TRIM(A2)でクリーンなデータを用意するか、数式を入力後にCtrl+Shift+Enterで確定する配列数式を使う方法もあります。

ただし全角スペースはTRIMでは取れないので、SUBSTITUTE関数を併用します:

=VLOOKUP(SUBSTITUTE(TRIM(D2)," ",""), A2:B100, 2, FALSE)

※「 」は全角スペースです。

原因2:数値と文字列が混在している(データ型の不一致)

これも超あるある。たとえば検索値のセルには数値の1001が入っているのに、検索される側には文字列の"1001"が入っているパターンです。

人間には同じ「1001」に見えますが、Excelにとって数値の1001と文字列の"1001"はまったくの別物。だから「見つからない」とエラーになります。

確認方法

セルの値が左寄せなら文字列、右寄せなら数値です(標準書式の場合)。また、セルの左上に緑色の三角マークが出ていたら「数値が文字列として保存されています」のサインです。

解決方法

方法A:文字列を数値に変換する

緑の三角マークが出ているセルを選択 → 表示される「!」アイコンをクリック → 「数値に変換」を選択します。複数セルをまとめて選択してもOKです。

方法B:数式で型を揃える

検索値を文字列に変換して検索するなら:

=VLOOKUP(TEXT(D2,"0"), A2:B100, 2, FALSE)

逆に検索値を数値に変換するなら:

=VLOOKUP(D2*1, A2:B100, 2, FALSE)

またはVALUE関数を使って:

=VLOOKUP(VALUE(D2), A2:B100, 2, FALSE)

原因3:検索方法(第4引数)がTRUEまたは省略されている

VLOOKUPの第4引数(検索方法)は、FALSE(完全一致)かTRUE(近似一致)を指定します。ここが落とし穴。

第4引数を省略すると、デフォルトはTRUE(近似一致)になります。

近似一致の場合、範囲の左端列が昇順に並んでいないと正しく動作しません。並んでいないデータでTRUEを使うと、#N/Aやデタラメな値を返してしまいます。

解決方法

商品コードや社員番号などピンポイントで一致する値を探したいなら、第4引数は必ずFALSEにしましょう。

=VLOOKUP(D2, A2:B100, 2, FALSE)

「FALSE」の代わりに「0」と書いてもOKです。ちなみにExcelを長年使っている人でも、ここを省略してハマるケースは珍しくありません。

原因4:検索範囲がズレている(列番号・参照範囲のミス)

数式をコピーしたときに参照範囲がズレるパターンです。たとえば=VLOOKUP(D2, A2:B100, 2, FALSE)を下にコピーすると、A2:B100A3:B101に自動で変わってしまいます。

範囲がズレると、検索値が範囲外になって#N/Aが出ます。

解決方法:絶対参照にする

範囲を$マークで固定(絶対参照)しましょう。

=VLOOKUP(D2, :00, 2, FALSE)

A2:B100を選択した状態でF4キーを押すと、自動で:00に変換されます。

また、列番号の指定ミスにも注意。範囲がA:Bの2列しかないのに列番号を3にすると#REF!エラーになります(#N/Aとは別のエラーですが、混同しやすいポイントです)。

原因5:改行コードや印刷できない文字が混入している

CSVやWebからコピーしたデータには、改行コード(Alt+Enter)制御文字が入っていることがあります。これもTRIM関数では取り除けません。

解決方法:CLEAN関数で除去する

CLEAN関数は印刷できない制御文字を削除する関数です。TRIM関数と組み合わせると最強です。

=VLOOKUP(CLEAN(TRIM(D2)), A2:B100, 2, FALSE)

検索される側のデータも汚れている場合は、作業列を作って=CLEAN(TRIM(A2))でクリーンアップしてからVLOOKUPを適用しましょう。

そもそもエラーを表示させたくない!IFERROR関数で#N/Aを消す方法

原因を突き止めて修正するのがベストですが、「該当なしの場合は空白にしたい」「エラーが出ても作業を止めたくない」というケースもありますよね。

そんなときはIFERROR関数でVLOOKUPを包みます。

=IFERROR(VLOOKUP(D2, :00, 2, FALSE), "")

第2引数にはエラー時に表示したい値を入れます。空白なら""、文字を出したいなら"該当なし"のように書きます。

ただし注意点がひとつ。IFERRORは#N/A以外のエラー(#REF!や#VALUE!など)もすべて隠してしまいます。つまり数式のバグまで見えなくなる危険があるんです。

#N/Aだけをキャッチしたい場合は、IFNA関数を使いましょう(Microsoft公式)。

=IFNA(VLOOKUP(D2, :00, 2, FALSE), "該当なし")

こうすれば#N/Aのときだけ「該当なし」を表示し、#REF!などの本当のバグはそのまま表示されるので安心です。

もう#N/Aで悩まない!XLOOKUPに乗り換えるという選択肢

Excel 2021以降またはMicrosoft 365を使っているなら、XLOOKUP関数への乗り換えをおすすめします(Microsoft公式)。

XLOOKUPにはVLOOKUPのつらいポイントが改善されています:

  • エラー処理が組み込み:第4引数に「見つからない場合の値」を指定できる。IFERRORが不要
  • 検索列が左端じゃなくてもOK:VLOOKUPは範囲の左端列しか検索できないが、XLOOKUPは自由
  • 列番号の指定が不要:返す列を直接指定するので、列の追加・削除でズレない
  • デフォルトが完全一致:第4引数を省略しても近似一致にならない

書式はこうです:

=XLOOKUP(検索値, 検索範囲, 戻り範囲, "該当なし")

たとえば:

=XLOOKUP(D2, A2:A100, B2:B100, "該当なし")

VLOOKUPで書くと=IFERROR(VLOOKUP(D2,:00,2,FALSE),"該当なし")になるところが、XLOOKUPならシンプルに1行で済みます。2026年3月時点でMicrosoft 365はXLOOKUPに対応しているので、使える環境なら積極的に乗り換えましょう。

なお、XLOOKUPの詳しい使い方と旧関数との違いはXLOOKUP vs VLOOKUP徹底比較ガイドでも解説しています。

FAQ

VLOOKUPの#N/Aと#REF!の違いは何ですか?

#N/Aは「検索値が見つからない」エラーで、#REF!は「参照先が無効(列番号が範囲を超えているなど)」エラーです。原因がまったく異なるので、エラーの種類を見て対処法を切り替えましょう。

IFERRORとIFNAはどちらを使うべきですか?

VLOOKUPの#N/A対策ならIFNA関数がおすすめです。IFERRORはすべてのエラーを隠してしまうため、数式のバグ(#REF!や#VALUE!)まで見逃すリスクがあります。IFNAなら#N/Aだけをキャッチし、他のエラーは表示されるので安全です。

Excel 2019でもXLOOKUPは使えますか?

残念ながら、XLOOKUPはExcel 2021以降またはMicrosoft 365で利用可能です。Excel 2019以前のバージョンでは使えないため、IFERRORやIFNAでVLOOKUPを補強する方法で対応してください。

TRIM関数で全角スペースは除去できますか?

できません。TRIM関数は半角スペースのみを除去します。全角スペースを除去するには=SUBSTITUTE(TRIM(A2)," ","")のようにSUBSTITUTE関数を併用してください(「 」は全角スペース)。

VLOOKUPの代わりにINDEX+MATCHを使うメリットはありますか?

あります。INDEX+MATCHは検索列が左端でなくても動作し、列の挿入・削除でもズレにくいのがメリットです。ただし2026年時点ではXLOOKUPが同等以上の機能を持っているので、XLOOKUPが使える環境ならそちらを優先する方がシンプルです。

参考文献