Excel

ExcelのVLOOKUPで#N/Aが出る原因7つと直し方【初心者向け】

本ページはプロモーションが含まれています

Excel ExcelのVLOOKUPで#N/Aが出る原因7つと直し方

VLOOKUPで「#N/A」が出るのは、探している値が検索範囲の左端の列に見つからなかったときです。数式そのものが壊れているのではなく、「見た目は同じなのにExcelには別の値に見えている」ケースがほとんどです。この記事では、よくある原因を確認しやすい順に7つ紹介し、それぞれの直し方を解説します。

目次
  1. そもそも#N/Aはどういうエラーか
  2. 原因1:検索値が本当に表に存在しない
  3. 原因2:前後に余分なスペースが入っている
  4. 原因3:数値と文字列が混ざっている
  5. 原因4:数式をコピーしたら検索範囲がずれた
  6. 原因5:探したい値が範囲の一番左にない
  7. 原因6:検索方法の指定が抜けている・違う
  8. 原因7:全角・半角や見えない文字の違い
  9. #N/Aを表示させたくないとき:IFERROR
  10. VLOOKUPの代わりにXLOOKUPを使う方法
  11. まとめ

そもそも#N/Aはどういうエラーか

#N/Aは「Not Available(値がない)」の意味で、VLOOKUPでは「指定した値が検索範囲の1列目に存在しない」ことを表します。

VLOOKUPの基本形は次のとおりです。

=VLOOKUP(検索値, 検索範囲, 列番号, 検索方法)
引数意味
検索値探したい値(例: 商品コード)
検索範囲表全体。探す値は必ずこの範囲の一番左の列に置く
列番号範囲の左から何列目の値を返すか
検索方法完全一致は FALSE(または 0)、近似一致は TRUE

つまり#N/Aが出たら、「検索値」と「検索範囲の1列目」のどこかが一致していない、と考えて原因を探していきます。

原因1:検索値が本当に表に存在しない

まずは単純に、探している値が表にないケースです。入力ミスや、マスタへの登録漏れが該当します。

確認方法

  1. 検索値のセルをコピーする
  2. 検索範囲の1列目を選択して「Ctrl+F」で検索する
  3. 見つからなければ、データが存在しないのが原因

本当に存在しないなら、エラーは正しい動きです。マスタにデータを追加するか、後述のIFERRORで表示を整えましょう。

原因2:前後に余分なスペースが入っている

「A001」と「A001 」(後ろにスペース)は、見た目はほぼ同じでもExcelでは別の値です。他のシステムからコピーしたデータや、手入力のデータによくあります。全角スペースと半角スペースの違いにも注意が必要です。

確認方法
空いているセルに =LEN(A2) と入力し、文字数を数えます。「A001」なのに5と表示されたら、余分な文字が入っています。

直し方
TRIM関数で前後のスペースを取り除いた値で検索します。

=VLOOKUP(TRIM(A2), $E$2:$G$100, 2, FALSE)

表側にスペースが入っている場合は、表の列そのものを整える必要があります。作業列に =TRIM(E2) を作って値として貼り付け直すか、「置換(Ctrl+H)」でスペースを空白に置き換えましょう。

原因3:数値と文字列が混ざっている

一番見落としやすい原因です。片方が数値の「100」、もう片方が文字列の「100」だと、VLOOKUPは一致しないと判断します。

よくある見分け方

  • セルの左上に緑の三角マークが出ている → 文字列として保存された数値の可能性
  • 同じ数字なのに、片方は左寄せ、片方は右寄せになっている(初期設定では数値は右寄せ、文字列は左寄せ)
  • =ISNUMBER(A2) が FALSE になる → 文字列

直し方
検索値の型を表側に合わせます。

状況数式の例
検索値が文字列、表が数値=VLOOKUP(VALUE(A2), $E$2:$G$100, 2, FALSE)
検索値が数値、表が文字列=VLOOKUP(A2&"", $E$2:$G$100, 2, FALSE)

根本的に直すなら、表側の列をすべて同じ型にそろえるのがおすすめです。文字列の数値は、緑の三角マークの「!」から「数値に変換する」でまとめて変換できます。

原因4:数式をコピーしたら検索範囲がずれた

1行目では正しく動くのに、下にコピーした行で#N/Aが出る場合は、検索範囲がずれている可能性が高いです。

たとえば E2:G100 のまま下にコピーすると、次の行では E3:G101、その次は E4:G102 と範囲が下がっていき、上のほうのデータが検索対象から外れてしまいます。

直し方
検索範囲を絶対参照($付き)にします。範囲を選んで「F4」キーを押すと $ が付きます。

=VLOOKUP(A2, $E$2:$G$100, 2, FALSE)

あわせて、表の最終行が範囲に含まれているかも確認しましょう。データを追加したのに範囲が $G$100 のままだと、101行目以降は見つかりません。表を「テーブル」に変換しておくと、範囲が自動で広がるので便利です。

原因5:探したい値が範囲の一番左にない

VLOOKUPは、検索範囲の一番左の列だけを探します。たとえば表がB列〜D列にあり、探したい商品コードがC列にあるのに、範囲を B2:D100 にしていると見つかりません。

直し方

  • 検索範囲の左端が、探したい値の列になるように範囲を指定し直す(例: C2:D100)
  • 返したい値が検索列より左にある場合はVLOOKUPでは取れないので、XLOOKUPかINDEX+MATCHを使う(後述)

原因6:検索方法の指定が抜けている・違う

第4引数を省略すると、近似一致(TRUE)として扱われます。近似一致は表が昇順に並んでいる前提の検索方法なので、並んでいない表で使うと#N/Aになったり、エラーにならずに間違った値を返したりします。

商品コードや社員番号のように「完全に同じものを探す」用途では、必ず FALSE(または 0)を指定しましょう。

=VLOOKUP(A2, $E$2:$G$100, 2, FALSE)

エラーが出ないのに結果がおかしい場合も、まずここを疑ってください。

原因7:全角・半角や見えない文字の違い

「A001」(全角のA)と「A001」(半角のA)、ハイフンの種類の違いなども別の値として扱われます。また、他のシステムから出力したデータには、改行などの見えない文字が含まれていることがあります。

直し方

  • 全角を半角にそろえるには ASC 関数: =ASC(A2)
  • 改行などの表示されない文字を取り除くには CLEAN 関数: =CLEAN(A2)
  • まとめて整えるなら =TRIM(CLEAN(ASC(A2))) のように組み合わせる

見た目で区別できないときのコツ

原因2・3・7は、見た目では区別がつかないのが厄介な点です。LEN関数で文字数を比べる、または =A2=E5 のように2つのセルを直接比較して FALSE になるかを見ると、原因を絞り込みやすくなります。

#N/Aを表示させたくないとき:IFERROR

本当にデータが存在しない場合もあるので、エラーの代わりに空白や「該当なし」と表示させたいことがあります。そのときは IFERROR で囲みます。

=IFERROR(VLOOKUP(A2, $E$2:$G$100, 2, FALSE), "該当なし")

IFERRORを使う前に

IFERRORは原因を直すのではなく見えなくするだけです。上の原因2〜7が残ったまま使うと、本来見つかるはずのデータまで「該当なし」になってしまいます。原因を確認してから使うのが鉄則です。

VLOOKUPの代わりにXLOOKUPを使う方法

Microsoft 365などの新しいExcelでは、XLOOKUP関数が使えます。XLOOKUPには次のメリットがあります。

  • 初期設定が完全一致なので、検索方法の指定漏れ(原因6)が起きない
  • 検索する列と返す列を別々に指定するため、左側の値も取り出せる(原因5を解決)
  • 見つからないときの表示を引数で指定できる
=XLOOKUP(A2, $E$2:$E$100, $F$2:$F$100, "該当なし")

使っているExcelでXLOOKUPが使えるかどうかは、セルに =XLOOKUP( と入力して候補が表示されるかで確認できます。使えない場合は、INDEX関数とMATCH関数の組み合わせでも同じことができます。

=INDEX($F$2:$F$100, MATCH(A2, $E$2:$E$100, 0))

ただし、余分なスペースや数値と文字列の違い(原因2・3・7)は、XLOOKUPでも同じように#N/Aの原因になります。データを整える作業はどの関数でも必要です。

まとめ

VLOOKUPの#N/Aは「検索値が範囲の1列目に見つからない」というサインです。次の順番で確認すると、ほとんどのケースで原因が見つかります。

  1. 検索値が本当に表にあるか(Ctrl+Fで検索)
  2. 余分なスペースがないか(LEN関数、TRIM関数)
  3. 数値と文字列が混ざっていないか(ISNUMBER関数、緑の三角マーク)
  4. コピーで検索範囲がずれていないか($で絶対参照)
  5. 探したい値が範囲の一番左にあるか
  6. 第4引数が FALSE になっているか
  7. 全角・半角や見えない文字の違いがないか(ASC関数、CLEAN関数)

原因を直したうえで、それでも存在しないデータに備えたい場合だけ IFERROR を使いましょう。新しいExcelを使っているなら、指定ミスが起きにくい XLOOKUP への切り替えもおすすめです。

ツール使い方ノート 編集部

IT・ガジェット・業務ツールの使い方とトラブル解決について、つまずきやすいポイントと解決手順をまとめています。内容に誤りを見つけた場合はお知らせください。

↑