Excel VLOOKUPの#N/Aエラー即解決!原因と5つの対処法

Excel VLOOKUPの#N/Aエラー即解決!原因と5つの対処法

ExcelのVLOOKUP関数で表示される「#N/A」エラーは、検索値が検索範囲に見つからないか、検索範囲が正しく指定されていないことが主な原因です。以下の手順で、検索値と範囲を正確に確認し、指定方法を修正することで速やかに解決できます。

VLOOKUP #N/Aエラーの主な原因

「#N/A」は「Not Available」の略で、「利用できません」「見つかりません」という意味を持ちます。VLOOKUP関数でこのエラーが表示される場合、最も一般的な原因は、指定した検索値が検索対象となる範囲の一番左の列に存在しないことです。

具体的には、以下のような状況で発生します。

  • 検索値が検索範囲内に本当に存在しない。
  • 検索値と検索範囲のデータの書式(数値と文字列など)が異なっている。
  • 検索値に余分なスペースや非表示文字が含まれている。
  • 検索範囲の指定が間違っている、または参照がずれてしまっている。
  • VLOOKUP関数の最終引数(検索方法)が「完全一致」になっていない。

#N/Aエラーを解決する5つの手順

以下の手順を上から順に確認・実行することで、ほとんどの#N/Aエラーは解決できます。

  1. 手順1:検索値(探したい値)を正確に確認する

    まず、VLOOKUP関数で指定している「検索値」が、見た目だけでなくデータとしても正確であるかを確認します。

    • 余分なスペースや非表示文字の除去

      検索値の前後に余分なスペースが入っていると、Excelは別の値と認識してしまいます。TRIM関数やCLEAN関数を使って除去しましょう。

      例:セルA2の検索値にスペースが入っている場合

      =VLOOKUP(TRIM(A2), 検索範囲, 列番号, FALSE)

    • 全角・半角、大文字・小文字の統一

      検索値と検索範囲で全角と半角、大文字と小文字が異なる場合もエラーの原因となります。必要に応じてASCJIS関数などで統一しましょう。

    • 目視で確認する

      検索値と同じ値を検索範囲の左端列からコピーして、VLOOKUPの検索値のセルに直接貼り付けてみてください。それでもエラーが出る場合は、検索値以外の原因の可能性が高いです。

  2. 手順2:検索範囲と列番号を正しく指定する

    VLOOKUP関数では、検索範囲と、そこから何列目のデータを取得するかを示す列番号が重要です。

    • 検索範囲の確認と絶対参照の使用

      VLOOKUP関数の第2引数「検索範囲」が、データを取得したい範囲全体を正しく含んでいるかを確認します。また、関数をコピーした際に検索範囲がずれないよう、絶対参照($を使うのが一般的です。

      例:A2を検索値とし、C列からE列の範囲で2列目のデータを取得する場合

      =VLOOKUP(A2, $C$2:$E$10, 2, FALSE)

    • 列インデックス番号の確認

      検索範囲の左端から数えて、何列目の値を取り出したいかを指定する「列インデックス番号」が正しいか確認します。例えば、$C$2:$E$10という範囲なら、C列が1、D列が2、E列が3となります。

  3. 手順3:検索値と検索範囲のデータ型(表示形式)を統一する

    Excelでは、見た目が同じでもデータ型(数値、文字列、日付など)が異なると一致しないと判断されることがあります。特に、数値が文字列として保存されているケースでよく発生します。

    • 数値と文字列の不一致

      セルの左上隅に緑色の三角形が表示されている場合、データ型が異なる可能性があります。これを修正するには、以下の方法があります。

      • 数値に変換したい場合:
        =VALUE(セル)または=セル*1と入力して、その結果を元の場所に貼り付け直します。
      • 文字列に変換したい場合:
        =TEXT(セル, "0")または=セル&""と入力して、その結果を元の場所に貼り付け直します。

      変換後、必ず検索値と検索範囲の両方でデータ型を揃えてください。

  4. 手順4:完全一致検索(FALSE)を指定する

    VLOOKUP関数の第4引数「検索方法」は、「FALSE」(または0)で「完全一致」を指定するのが鉄則です。この引数を省略するか「TRUE」(または1)にすると「近似一致」となり、期待しない結果や#N/Aエラーの原因となることがあります。

    例:

    =VLOOKUP(A2, C2:E10, 2, FALSE)

    FALSEを明示的に指定することで、完全に一致する値のみを検索対象とします。

  5. 手順5:検索値が検索範囲内に本当に存在するか確認する

    上記の対策を全て試しても解決しない場合、そもそも検索値が検索範囲の左端列に存在しない可能性があります。COUNTIF関数を使って、実際に値が存在するか確認してみましょう。

    例:検索値A2が、検索範囲のC列にいくつ存在するか確認

    =COUNTIF(C:C, A2)

    この結果が0であれば、残念ながら検索値は存在しません。データ自体を修正するか、別の検索値を使用する必要があります。

注意点・補足

  • 根本原因の特定が重要

    IFERROR関数を使って#N/Aエラー表示を隠すこともできますが、根本原因を特定しないと後々問題になる可能性があります。まずは原因を突き止め、データや数式を正しく修正することを推奨します。

    例:=IFERROR(VLOOKUP(A2, C2:E10, 2, FALSE), "該当データなし")

  • 再発防止策:データ入力規則の活用

    今後同様のエラーを防ぐために、検索値が入力されるセルや、検索範囲のデータに対して「データの入力規則」を設定し、入力できる値の種類や形式を制限することが有効です。これにより、不適切なデータの入力を未然に防ぎます。

  • 代替関数も検討

    Excelのバージョンが新しい場合(Microsoft 365など)は、より高機能なXLOOKUP関数を利用するのも良いでしょう。VLOOKUPよりも柔軟で、エラーハンドリングも容易です。また、INDEX関数とMATCH関数を組み合わせる方法も、VLOOKUPの代替として広く利用されています。

よくある質問(FAQ)

Q1: VLOOKUPで#N/Aが出るが、目視ではデータがあるように見えるのはなぜですか?
A1: 最も多い原因は、見た目では分かりにくい「余分なスペース」や「非表示文字」が含まれていること、または「データ型の不一致(数値と文字列)」です。全角/半角の違いも原因となることがあります。TRIM関数やCLEAN関数でスペースなどを除去し、セルの書式設定やVALUE関数などでデータ型を統一してみてください。
Q2: 毎回VLOOKUPでエラーが出るのを防ぐにはどうすれば良いですか?
A2: 以下の対策を習慣化することをおすすめします。

  • 検索範囲は必ず絶対参照($で固定する。
  • VLOOKUPの第4引数はFALSEを明示的に指定する。
  • 検索値と検索範囲のデータ入力規則を設定し、入力時にデータ形式を統一する。
  • データ入力後にTRIM関数などで余分なスペースを自動除去する仕組みを導入する。

これらを徹底することで、エラーの発生を大幅に減らすことができます。

まとめ

  • VLOOKUPの#N/Aエラーは、主に「検索値が見つからない」ことが原因です。
  • 検索値の正確性(スペース、型)と検索範囲の指定(絶対参照、列番号、完全一致)を徹底的に確認しましょう。
  • TRIMVALUE関数でデータを整形し、FALSEで完全一致を指定することが解決の鍵となります。

コメント

タイトルとURLをコピーしました