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引数を確認する
- 数式を確認する
VLOOKUPを入力したセルをクリックし、数式バーで範囲指定が正しいか確認します。たとえば、=VLOOKUP(A2, Sheet2!A:C, 3, FALSE) のように、検索したい値が範囲の1列目(ここではA列)に含まれているか確認してください。 - 第4引数をFALSEにする
第4引数がTRUEまたは省略されている場合は、FALSEに変更します。必ず完全一致で検索したいときはFALSEを指定しましょう。
手順2: 検索値のデータ型を一致させる
- 検索値が数値か文字列か確認する
検索値のセルを選択し、数式バーで値の前に「’」がないか確認します。また、数値の場合、セルの表示形式が「数値」になっていることを確かめてください。 - 範囲のデータ型を確認する
範囲内の対応する値も、同様に数値か文字列かを調べます。必要に応じて、VALUE関数で文字列を数値に変換するか、TEXT関数で数値を文字列に変換して一致させます。たとえば、=VLOOKUP(TEXT(A2, “0”), 範囲, 列番号, FALSE) とすることで、数値を文字列として検索できます。
手順3: 余分な空白やスペースを取り除く
- TRIM関数で余分な空白を削除する
検索値や範囲のデータに前後のスペースがあると、一致しません。TRIM関数を使って空白を削除してから検索しましょう。たとえば、=VLOOKUP(TRIM(A2), 範囲, 列番号, FALSE) とします。 - 範囲のデータも同様に処理する
範囲のデータに余分な空白がある場合は、別の列に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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
