「確かにデータはあるはずなのに、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:B100がA3: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が使える環境ならそちらを優先する方がシンプルです。






