VLOOKUP関数でエラーが出る原因と対処法まとめ|#N/A・#REF!・#VALUE!をやさしく解説

Excelでよく使われる「VLOOKUP関数」は、指定した値に応じて表からデータを取り出せる便利な関数です。
しかし、いざ使ってみると「#N/A」や「#REF!」などのエラーが表示されて戸惑ってしまうことも多いのではないでしょうか?

特に初心者の方にとっては、**「何が間違っているのか分からない」「正しく入力したのに結果が出ない」**といった壁にぶつかりやすい関数でもあります。

本記事では、VLOOKUP関数を使ったときに発生しやすい代表的なエラーの原因と対処法をやさしく解説します。
見た目ではわからないスペースや表記ゆれの問題、列番号のミス、データ型の違いなど、実務でよくあるつまずきポイントも事例とあわせて紹介していきます。

「なぜか正しく動かない」「エラーが出て困っている」そんなときのヒントとして、ぜひ参考にしてみてください。

目次

まずはエラーの種類を見極めよう

VLOOKUP関数でよく見かけるエラーは主に以下の3つです。
それぞれ原因と対処法の方向性が異なるため、エラーの種類を見て判断するのが第一歩です。

エラー 意味 よくある原因例
#N/A 該当データなし 検索値が存在しない/スペースや表記ゆれ/数値と文字列の不一致など
#REF! 範囲外の参照 指定した列番号が範囲外/参照先の列やシートが削除された
#VALUE! 引数が不正 列番号に文字列を入れた/検索の型がTRUE・FALSE以外/空欄などの無効な引数を渡した

 特に #N/A はVLOOKUPで最もよく出るエラーです。
データが正しく一致していないケースがほとんどなので、検索値や元データのスペースや型をよく確認するのがポイントです。


このあと、それぞれのエラーがなぜ起きるのか/どう直せばいいのかを、具体的な関数例つきで順に解説していきます。

#N/A(該当なし)エラーの原因と対処法

VLOOKUP関数で最もよく見かけるエラーが 「#N/A(該当なし)」 です。
これは「検索した値が見つかりませんでした」というExcelからのメッセージです。


■ 主な原因

原因の種類 内容
検索値が表の中に存在しない 誤入力・そもそも該当データがないケース
スペースや表記の揺れ 「山田太郎」と「山田 太郎」など、見た目が似ていても一致しない
数値と文字列の不一致 見た目が同じ「1001」でも、データ型が異なると一致しない
完全一致(FALSE)で探している 一致しないとエラーになる(TRUEの場合は近似検索になる)

■ 対処法①:スペース・表記ゆれを除去する

たとえば以下のようなセル内容は、見た目が同じでも実際は一致しません。

検索値(A列) 表内データ(E列)
山田太郎 山田 太郎(全角スペースあり)

【対処式(スペース除去)】

=VLOOKUP(SUBSTITUTE(SUBSTITUTE(A2, " ", ""), " ", ""), E2:F10, 2, FALSE)

■ 対処法②:データ型を統一する(数値 vs 文字列)

見た目 実際のデータ型
’1001 文字列(”あり)
1001 数値

【対処式】

=VLOOKUP(TEXT(A2,"0"), E2:F10, 2, FALSE) '← 数値を文字列化
=VLOOKUP(VALUE(A2), E2:F10, 2, FALSE) '← 文字列を数値化

■ 対処法③:完全一致(FALSE)を指定する

=VLOOKUP(A2, E2:F10, 2)

↑上記のように検索の型(4番目の引数)を省略すると、自動的に近似一致(TRUE)になります。
これにより、意図しない結果が出たり、エラーになる原因に。

【正しい書き方】

=VLOOKUP(A2, E2:F10, 2, FALSE)

■ 対処法④:エラー時の見た目を整える(IFNA)

=IFNA(VLOOKUP(A2, E2:F10, 2, FALSE), "該当なし")

  • #N/A を「該当なし」などの文字列に置き換えることで、見た目を整えられます。

  • 報告書などでエラー表示を避けたいときに便利です。

 

#REF!(参照エラー)の原因と対処法

#REF! は「参照先が無効になっています」という意味のエラーです。
VLOOKUP関数では、列番号のミスや、参照しているセル・シートの削除が主な原因です。


■ 主な原因

原因の種類 内容
列番号が範囲外になっている 例:範囲が2列しかないのに「3」と指定した
参照していた列やシートを削除した シート名を変更・削除、列や行を削除した
コピーや移動によって参照先がずれた 数式コピーで相対参照が崩れた場合など

■ 例:列数に対して列番号が大きすぎる

=VLOOKUP(A2, D2:E10, 3, FALSE)

このように、2列しかない範囲に対して「3列目」を指定すると #REF! エラーになります。


■ 対処法①:範囲と列番号の整合性をチェック

  • 範囲の左端列を「1」として数えたときに、指定した列番号が存在するかを確認しましょう。

  • 範囲を選び直すか、列番号を修正することで解決できます。


■ 対処法②:削除された参照先を再指定する

  • シート名を変更した/行や列を削除した場合、数式が壊れることがあります。

  • 数式バーを確認し、#REF! になっている参照を元に戻す or 修正しましょう。


■ ワンポイント

#REF! は、元のセルやシートが見つからないときに出るエラーです。
「列を増減した」「シートを削除した」など操作の履歴を思い出すことで原因特定の手がかりになります。

#VALUE!(引数が不正)エラーの原因と対処法

#VALUE! は、「指定された引数が数式として正しく扱えない」というときに表示されるエラーです。
VLOOKUP関数では、列番号や検索の型(TRUE/FALSE)などの入力ミスが原因でこのエラーが発生することがあります。


■ 主な原因

原因の種類 内容
列番号に文字列が入っている 例:"二列目"のような文字列指定は不可
検索の型に不正な値を指定している TRUE/FALSE 以外の文字列など
空欄や無効なデータを引数にしている 空のセルや未設定の値を渡している場合

■ 例1:列番号が不正

=VLOOKUP(A2, D2:F10, "二列目", FALSE)

列番号数値ではなく文字列が入っているため #VALUE! エラーになります。

【正しい例】

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

■ 例2:検索の型が不正

=VLOOKUP(A2, D2:F10, 2, "完全一致")

→ 検索の型は、TRUE または FALSE のいずれかで指定する必要があります。文字列を入れるとエラーになります。

【正しい例】

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

■ 例3:引数が空欄になっている

  • 引数に指定したセルが空白だった場合も、内容によっては #VALUE! が返ることがあります。

  • 特に「検索値」や「列番号」が空になっていると、処理できないためエラーになるケースが多いです。


■ 対処法

  • 列番号は**整数(1以上の数値)**で指定する

  • 検索の型にはTRUE/FALSEのみを使う

  • 空欄や未設定セルを使わないように注意する

  • 必要であれば、引数を IF などでエラーチェック付きで制御するのも有効です


このように、#VALUE! エラーは構文ミスや意図しない空欄など、基本的な設定ミスが原因で発生します。
エラーが出たらまずは、数式内の引数がすべて正しく入力されているかを丁寧に確認しましょう。

#NAME?(名前が無効)など、まれに出るエラーも知っておこう

#NAME? は、関数名や名前付き範囲などがExcelに正しく認識されなかったときに表示されるエラーです。
VLOOKUP関数を使う中では発生頻度は少ないものの、スペルミスや書式の誤りで突然表示されることがあるため注意が必要です。


■ 主な原因

原因の種類 内容
関数名のスペルミス 例:=VLOKUP(...) と入力してしまうなど
名前付き範囲が未定義 =VLOOKUP(A2, 商品一覧, 2, FALSE) の「商品一覧」が定義されていない
文字列に引用符をつけていない 例:=IF(A1=テスト, "OK", "NG")"テスト"にすべき

■ 対処法

  • 関数名は正しいスペルで入力されているか確認する(入力候補から選ぶのがおすすめ)

  • 名前付き範囲を使っている場合は、[数式] → [名前の管理] で登録済か確認

  • 条件に使う文字列は、必ず “(ダブルクォーテーション)で囲む


■ ワンポイント

特に関数名のスペルミスは気づきにくいミスのひとつです。
「自分では合っていると思っていたのに…」という場合も、よく見ると VLOOKUPVLOKUPVLOOKP になっていることがあります。
心当たりがある場合は、数式バーで一文字ずつ確認してみましょう。

エラーの見た目を整える方法|IFERROR・IFNAの使い分け

エラーが発生する理由を理解していても、そのままエラー表示(#N/A や #REF!など)を残すと、見た目が悪く不安を与えることがあります。
特に、上司や他の人に共有するファイルでは、エラー表示を適切に制御することも大切です。

ここでは、エラーが発生したときに見た目を整えるための関数を紹介します。


IFERRORでどんなエラーも一括制御

IFERROR関数は、数式がエラーになった場合に代わりの値を表示する万能関数です。
VLOOKUPに限らず、ほとんどすべてのエラーに対応できます。

■ 構文:

=IFERROR(数式, エラー時の値)

■ 例:

=IFERROR(VLOOKUP(A2, E2:F10, 2, FALSE), "該当なし")
  • 検索に失敗したときは「該当なし」と表示されます

  • エラーがなければ通常通りの結果が返ります


IFNAなら#N/Aだけをスマートに処理

IFNA関数は、#N/Aエラーに特化して処理できる関数です。
他のエラーはそのまま出したい場合などに便利です。

■ 構文:

=IFNA(数式, #N/A時の値)

■ 例:

=IFNA(VLOOKUP(A2, E2:F10, 2, FALSE), "登録なし")
  • #N/Aのときだけ「登録なし」と表示

  • 他のエラー(#REF!など)はそのまま表示される


ISNAなどの判定関数で分岐も可能

より柔軟に制御したいときは、ISNAISERRORといった判定関数+IF関数の組み合わせも使えます。

■ 例:#N/Aだけを条件分岐で処理

=IF(ISNA(VLOOKUP(A2, E2:F10, 2, FALSE)), "未登録", "登録済")

■ 他にも使える関数

関数名 対象 主な用途
ISERROR() すべてのエラー 汎用的なエラー判定
ISERR() #N/A以外のエラー #N/Aは許容したいときに便利
ISNA() #N/Aのみ VLOOKUPとの相性◎

ワンポイント:

  • 社外提出や印刷資料にエラーが表示されるのは避けたい場面が多いです

  • ただし、「なぜエラーが出たのか」を完全に隠すのではなく、意図的に制御するという考え方が重要です

つまずきやすい落とし穴とチェックリスト

VLOOKUP関数を使ううえで、**「一見正しく見えるのに結果が返らない」「エラーにはならないが合っていない」**というケースがよくあります。
この章では、初心者が特につまずきやすいポイントをチェック形式でまとめました。
エラーの原因がすぐに特定できないときの確認リストとして活用してみてください。


✔ チェック①:検索の型(TRUE/FALSE)を省略していないか?

  • 最後の引数を省略すると、Excelは自動的に「TRUE(近似一致)」で検索します

  • 文字列やIDなどは、FALSE(完全一致)を明示的に指定するのが基本です

=VLOOKUP(A2, E2:F10, 2, FALSE)

✔ チェック②:列番号は範囲内になっているか?

  • =VLOOKUP(..., 3, FALSE) のようにしていても、指定した範囲が2列しかない場合は #REF! エラーになります

  • 範囲の左から数えて何列目かを指定しましょう


✔ チェック③:検索値と表のデータが“見た目だけ”一致していないか?

  • 全角/半角スペース、カタカナとひらがな、数値と文字列の違いなどで一致しないことがあります

  • SUBSTITUTETEXT関数で整えるのが有効です


✔ チェック④:結合セルや改行が含まれていないか?

  • 結合されたセルや、見えない改行があると、正しく一致しないことがあります

  • CLEANTRIM関数で不要な文字を除去してみましょう


✔ チェック⑤:参照先のシート名やセルが変更・削除されていないか?

  • シート名や列を変更したあと、VLOOKUPの参照範囲が壊れている可能性があります

  • #REF! などのエラーが出ていたら、数式バーで参照範囲を確認しましょう


✔ チェック⑥:結果が返ってきても「正しいか」確認しているか?

  • #N/A#REF! が出ていなくても、意図しない結果が返っているケースがあります

  • 特に、TRUE指定時の近似一致は誤った値が出てもエラーにならないため注意が必要です


上記のチェックリストを使って一つずつ確認していけば、VLOOKUPのエラーや動作不良はかなりの確率で解消できます。

まとめ|エラーの意味を知ればVLOOKUPはもっと安心して使える

VLOOKUP関数は、使いこなせると非常に便利な検索ツールですが、
ちょっとした違いでも「#N/A」や「#REF!」といったエラーが出やすいのも事実です。

しかし、今回ご紹介したように、エラーには必ず原因があります。
それぞれのエラーの意味と対処法を知っていれば、慌てず冷静に対応できるようになります。


本記事のおさらい

  • #N/A は「該当なし」。スペース・型の違い・検索値のミスをチェック

  • #REF! は「参照範囲が壊れている」。列番号や削除されたセルに注意

  • #VALUE! は「引数が不正」。列番号や検索の型に文字列を入れていないか確認

  • IFERRORIFNA を使えば、見た目の整えや分岐処理も可能

  • 「エラーが出る=使えない」ではなく、使い方のヒントと捉えることが大切


最後にひとこと

エラーはExcelからの「ここを見直してほしい」というメッセージです。
原因を理解して対応できるようになれば、VLOOKUPはもっと頼れる存在になりますよ!

\あわせて読みたい関連記事はこちら/

・[VLOOKUP関数でエラーが出る原因と対処法まとめ] ・VLOOKUP関数のエラー対策まとめ|IFERROR・IFNAや列構造の工夫でトラブルを防ぐ実務テクニック集