VLOOKUPで別シート参照ができない原因と解決方法|#N/A・範囲ミスも解説
VLOOKUP関数で「別シートを参照したいのに、うまく表示されない」「#N/Aエラーが出てしまう」と困った経験はありませんか?
VLOOKUPはExcelの中でも使用頻度が高い関数ですが、別シート参照になると一気につまずきやすいのが特徴です。
原因は難しいものではなく、
- 範囲指定のミス
- 絶対参照の設定漏れ
- シート名の指定方法
など、よくある初歩的なポイントであることがほとんどです。
この記事では、「VLOOKUP関数で別シートの参照ができない」と悩んでいる方に向けて、原因 → 正しい書き方 → よくあるミス → 解決しないときの対処法を順番に解説します。
VLOOKUPで別シート参照ができない原因とは?
VLOOKUPで別シート参照ができない場合、多くはExcelの不具合ではなく、設定や書き方の問題です。
まずは、代表的なエラーや症状から原因を見ていきましょう!
#N/Aエラーが表示される場合
#N/Aエラーは「検索値が見つかりません」という意味です。
別シート参照でこのエラーが出る場合、次のような原因が考えられます。
- 検索値が参照先シートの範囲に存在しない
- 検索範囲の一番左列に検索値がない
- 全角・半角や空白の違いがある
VLOOKUPは完全一致が前提の場合が多いので、見た目が同じでも内部的に違う値だとエラーになります。
値が合っているのに結果が返らない場合
エラーは出ていないのに、空白や想定外の値が表示されるケースは、
- 列番号の指定ミス
- 参照範囲がズレている
- 近似一致になっている
といった原因が多いです。
特に別シート参照では、オートフィル時のズレに注意が必要です。
VLOOKUPで別シートを正しく参照する基本構文
ここで、別シート参照の正しい書き方を確認しておきましょう。下記の記事でも詳しく説明しているので確認してみてください。
別シート参照の正しい書き方
VLOOKUP関数でシートを参照する際の基本構文は以下のとおりです。
=VLOOKUP(検索値, シート名!検索範囲, 列番号, 検索方法)
検索値・・・検索したい値のセルを指定
検索範囲・・参照したいデータ範囲を指定
列番号・・・検索範囲内で参照したい列番号を指定
検索方法・・完全一致なら「FALSE」または「0」で指定
例えば下記のようになります。
=VLOOKUP(A2, Sheet2!A:B, 2, 0)
ポイントは、「シート名!検索範囲」という形で指定することです。
シート名に注意すべきポイント
シート名にスペースや記号が含まれている場合は、シングルクォーテーション(’)で囲む必要があります。シングルクォーテーションがついていないとデータを参照できないので要注意です。
例えば「売上 データ」というシート名からデータを参照したい場合は次のようになります。
=VLOOKUP(A2, ‘売上 データ’!A:B, 2, 0)
別シート参照でよくあるミスと対処法
ここからは、実務で特に多いミスを見ていきましょう。
検索範囲に検索値が含まれていない
VLOOKUP関数は、検索範囲の一番左の列から検索します。
別シートの範囲指定がズレていると値があっても見つかりません。
対処法:検索値が必ず範囲の左端に来るように指定します。
列番号の指定ミス
列番号は、検索範囲の左から何列目かを指定します。
別シートだと、どの列を参照しているか分からなくなりがちです。
対処法:範囲を一度選択し直して左から数え直しましょう。
近似一致(TRUE)になっている
第4引数を省略すると、近似一致(TRUE)になります。
これが原因で正しく検索できないケースは非常に多いです。
対処法:一旦検索方法はFALSEまたは0を指定しましょう。
絶対参照を設定しないと起きるトラブル
別シートにかかわらず範囲を指定する関数は、絶対参照を設定しないとトラブルが起きます。
数式をコピーしても参照するセルが動かないように固定する指定方法です。セル番地に $(ドルマーク) を付けることで、常に同じセルや範囲を参照できます。
$(ドルマーク)の正しい使い方
VLOOKUP関数で絶対参照を使う場合、下記のようになります。
=VLOOKUP(A2, Sheet2!$A$2:$B$100, 2, FALSE)
それでも別シート参照できない場合のチェックリスト
ここまで直しても解決しないとストレスが溜まりますよね…。でもまだ原因はあるので次の項目を見ていきましょう。
全角・半角の違い
VLOOKUPでは、見た目が同じでも内部的に異なる値は別物として扱われます。
そのため、数字や英字であっても、全角と半角が混ざっていると一致せず #N/A エラーになることがあります。
特に注意したいのは下記です。
- 他システムからコピーしたデータ
- WebページやPDFから貼り付けた値
対処法としては、CLEAN関数やSUBSTITUTE関数で不要な文字を除去したり、すべてのデータを全角にするといった方法が有効です。
数値と文字列の違い
Excelでは、数値と文字列はまったく別のデータ型として扱われます。
そのため、見た目が「100」でも、数値の100と文字列の”100″が混在していると、VLOOKUPでは一致しません。
この問題は、
- 先頭にアポストロフィ(’)が付いている
- CSVや外部データを取り込んだ
場合によく発生します。
対処法としては、VALUE関数で数値に変換する形式を「標準」に変更して再入力する
といった方法があります。
先頭・末尾の空白
検索値や参照先データに目に見えない空白(スペース)が含まれていると、VLOOKUPは一致しません。特に先頭や末尾の空白は見逃しやすく原因特定が難しいポイントです。
このような空白は、
- コピー&ペースト
- 他システムからのデータ連携
で混入しやすくなります。
対処法としては、TRIM関数を使って不要な空白を削除するのが効果的でしょう。
それでも解決しない場合は、CLEAN関数と組み合わせて文字列を整えると改善することがあります。
VLOOKUPが使えない場合の代替方法
VLOOKUPは便利な関数ですが、
- 検索列が左端にない
- 列の追加や構成変更が多い
- 別シート参照でトラブルが頻発する
といったケースでは、別の関数を使った方が安定することも多くあります。
ここでは、VLOOKUPの代替としてよく使われる2つの方法を紹介します。
XLOOKUPを使う方法
XLOOKUP関数はVLOOKUPの後継として登場した新しい関数です。別シート参照との相性がよく、VLOOKUPで起きがちな制限やミスをほぼ解消できます。
主な特徴は以下のとおりです。
- 検索列が左端でなくてもOK
- 列番号の指定が不要
- エラー時の表示を指定できる
- 別シート参照が直感的
基本構文は次のとおりです。
=XLOOKUP(検索値, 検索範囲, 返す範囲)
実務では「=XLOOKUP(A2, Sheet2!A:A, Sheet2!B:B)」のような式になります。
VLOOKUPで別シート参照がうまくいかない場合、最も簡単で安全な解決策がXLOOKUPと言えるでしょう。ただし、Excelのバージョンが対応していない場合は使用できない点に注意が必要です。
INDEX+MATCHで対応する方法
INDEX+MATCHは、古くから使われている組み合わせですが、柔軟性が高く様々なレイアウトにも対応できるのが強みです。
基本構文は以下のようになります。
=INDEX(返す範囲, MATCH(検索値, 検索範囲, 0))
この方法のメリットは、
- 検索列の位置に制限がない
- 列構成が変わっても壊れにくい
- 別シート参照でも安定して動作する
などがありますが、数式がやや分かりにくいというデメリットもあります。
個人的にはINDEX+MATCHは「Excelに慣れてきた人」「複雑な表を扱う人」にはおすすめの方法です。
まとめ|VLOOKUPで別シート参照ができない原因と解決ポイント
最後に、VLOOKUPで別シート参照ができないときのポイントを整理します。
別シート参照ができない主な原因
VLOOKUPで別シート参照ができない原因の多くは、次のような基本的なミスです。
- 検索範囲の指定ミス
- 列番号の指定間違い
- 近似一致(TRUE)になっている
- 絶対参照が設定されていない
- データ形式の違い(全角・半角、数値・文字列、空白)
Excelの不具合ではなく、設定や書き方の問題であることがほとんどです。
まず確認すべきチェック項目
別シート参照ができない場合は、次の順番で確認しましょう。
- 第4引数がFALSEになっているか
- 検索範囲の左端に検索値があるか
- 検索範囲が絶対参照になっているか
- シート名の指定方法は正しいか
- データ形式が統一されているか
このチェックだけで、多くのトラブルは解決します。
どうしても解決しない場合の対処法
すべて確認しても解決しない場合は、無理にVLOOKUPにこだわる必要はありません。
- XLOOKUPに切り替える
- INDEX+MATCHを使う
- データの形式を一度整え直す
といった方法を試すことで、結果的に作業時間を大きく短縮できることもあります。

