【Googleスプレッドシート】VLOOKUPで#N/Aエラーになる原因と直し方!検索値と範囲のチェック方法

【Googleスプレッドシート】VLOOKUPで#N/Aエラーになる原因と直し方!検索値と範囲のチェック方法
🛡️ 超解決

VLOOKUP関数を使っているときに突然「#N/A」と表示されて困った経験はありませんか?せっかくデータを入力したのに値が正しく検索されないと、作業が止まってしまいますよね。このエラーは、検索値と範囲の設定に原因があることがほとんどです。この記事では、VLOOKUPで#N/Aエラーが発生する主な原因と、その直し方を具体的に解説します。

手順を追って確認すれば、初心者の方でも簡単にエラーを解消できるようになります。ぜひ一緒にチェックしていきましょう。

【要点】VLOOKUPの#N/Aエラーは検索値と範囲のずれが原因です

  • 第4引数FALSEを指定して完全一致検索: 省略すると近似一致になり、意図しない結果や#N/Aが出ることがあります。
  • 検索値が範囲の1列目にあるか確認: VLOOKUPは範囲の左端列しか検索できません。検索値が1列目にないとエラーになります。
  • データ型を一致させる(数値と文字列): 数値として入力された検索値を文字列で検索すると不一致になり、#N/Aが発生します。

ADVERTISEMENT

VLOOKUPで#N/Aエラーが発生する3つの主な原因

VLOOKUPの#N/Aエラーは、検索の仕組みを理解すれば簡単に解決できます。主な原因は以下の3つに集約されます。

1つ目は、検索値が範囲の1列目に存在しないことです。VLOOKUPは指定した範囲の左端の列だけを検索します。そのため、検索したい値が左端列にない場合は、必ずエラーになります。たとえば、社員番号で名前を検索したいのに、範囲に社員番号が含まれていないケースです。

2つ目は、検索方法の指定ミスです。VLOOKUPの第4引数には、近似一致(TRUE)か完全一致(FALSE)を指定します。多くの場合、完全一致で検索したいのにTRUEを指定したり、省略したりすると、期待しない結果や#N/Aが返ります。省略するとデフォルトでTRUE(近似一致)になるため注意が必要です。

3つ目は、データ型の不一致です。たとえば、検索値が数値の「100」なのに、範囲のデータが文字列「’100」として入力されていると、Googleスプレッドシートは別物と判断します。このような場合、見た目は同じでも#N/Aエラーが発生します。

#N/Aエラーを解決する具体的な手順

ここからは、上記の原因を1つずつ確認し、修正する手順を解説します。順番に沿ってチェックすれば、確実にエラーを直せます。

手順1: 範囲設定と第4引数を確認する

  1. 数式を確認する
    VLOOKUPを入力したセルをクリックし、数式バーで範囲指定が正しいか確認します。たとえば、=VLOOKUP(A2, Sheet2!A:C, 3, FALSE) のように、検索したい値が範囲の1列目(ここではA列)に含まれているか確認してください。
  2. 第4引数をFALSEにする
    第4引数がTRUEまたは省略されている場合は、FALSEに変更します。必ず完全一致で検索したいときはFALSEを指定しましょう。

手順2: 検索値のデータ型を一致させる

  1. 検索値が数値か文字列か確認する
    検索値のセルを選択し、数式バーで値の前に「’」がないか確認します。また、数値の場合、セルの表示形式が「数値」になっていることを確かめてください。
  2. 範囲のデータ型を確認する
    範囲内の対応する値も、同様に数値か文字列かを調べます。必要に応じて、VALUE関数で文字列を数値に変換するか、TEXT関数で数値を文字列に変換して一致させます。たとえば、=VLOOKUP(TEXT(A2, “0”), 範囲, 列番号, FALSE) とすることで、数値を文字列として検索できます。

手順3: 余分な空白やスペースを取り除く

  1. TRIM関数で余分な空白を削除する
    検索値や範囲のデータに前後のスペースがあると、一致しません。TRIM関数を使って空白を削除してから検索しましょう。たとえば、=VLOOKUP(TRIM(A2), 範囲, 列番号, FALSE) とします。
  2. 範囲のデータも同様に処理する
    範囲のデータに余分な空白がある場合は、別の列にTRIM関数で処理したデータを作成し、その列を範囲に設定します。

VLOOKUP使用時のよくある間違いと注意点

エラーを防ぐためには、VLOOKUPの特性を正しく理解することが大切です。ここでは、特に起こしやすいミスをピックアップします。

範囲の列番号が間違っている

第3引数の列番号は、範囲の左端から数えた相対的な位置です。たとえば、範囲を「B:D」と指定した場合、列番号1はB列、2はC列、3はD列になります。範囲の先頭がA列であっても、列番号は1から始まることに注意してください。

別シートや別ファイルを参照するときの注意

別シートを参照する場合、範囲をシート名で指定する必要があります。たとえば、=VLOOKUP(A2, ‘シート2’!A:B, 2, FALSE) のようにシート名をシングルクォーテーションで囲みます。シート名にスペースが含まれる場合は、必ずクォーテーションで囲んでください。また、別ファイルを参照するIMPORTRANGEとの組み合わせでは、権限設定が必要になることも覚えておきましょう。

IFERROR関数でエラーを隠してしまう

#N/Aエラーを非表示にするためにIFERROR関数を使う方がいますが、根本的な原因を見逃すリスクがあります。エラーの原因を解決するまでは、IFERRORを使わずに数式をそのまま表示させておくことをおすすめします。

ADVERTISEMENT

VLOOKUPと他の検索関数の比較

VLOOKUPの代わりに使える関数を理解しておくと、より柔軟に対応できます。代表的なものを比較します。

関数 特徴 メリット デメリット
VLOOKUP 縦方向に検索し、指定列の値を返す シンプルな構文で使いやすい 検索列が左端でなければならない、右方向しか抽出できない
INDEX+MATCH MATCHで位置を求め、INDEXで値を取得 左方向にも検索可能、範囲の自由度が高い 数式が長くなりがち
XLOOKUP 左右どちらにも検索でき、エラー処理も内蔵 VLOOKUPの欠点をすべて解消 一部の旧バージョンでは使用不可

状況に応じてこれらの関数を選ぶと、より効率的にデータを取得できます。

VLOOKUPの#N/Aエラーは、検索値と範囲のチェックでほとんど解決できます。まずは第4引数をFALSEにし、検索値が範囲の1列目にあることを確認してください。データ型の不一致や余分な空白にも注意しましょう。もしVLOOKUPの制限に困ったら、INDEX+MATCHやXLOOKUPへの切り替えも検討してみてください。これらの関数をマスターすれば、スプレッドシートの操作がさらにスムーズになります。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。