Excelで「この商品コード、ちゃんとマスタにあるのにVLOOKUPで表示されない!」「社員番号が一致しているはずなのに#N/Aエラーが出る…」といった経験はありませんか?
VLOOKUP関数は非常に便利な検索関数ですが、少しの入力ミスや見えない違いでも結果が返らない(=ヒットしない)というケースがあります。
この記事では、VLOOKUP関数で「データはあるのに検索できない」問題の原因とその対処法を、初心者にもわかりやすく徹底解説します。VLOOKUPを業務で活用している方や、トラブル対応に悩む方にとって必見の内容です。
目次
そもそもVLOOKUP関数とは?基本構文を確認
まずは、VLOOKUPの基本的な書き方を再確認しましょう。
=VLOOKUP(検索値, 範囲, 列番号, [検索方法])
- 検索値:探したいデータ(商品コード、社員番号など)
- 範囲:検索対象の表(1列目に検索値があること)
- 列番号:返したい列(範囲内で左から数えた番号)
- 検索方法:通常は「FALSE(完全一致)」を指定
【Excel】【初心者向け】VLOOKUP関数の使い方をやさしく解説|Excelの検索・参照を自動化しよう!
✅ よくあるトラブル:「検索値はあるのにヒットしない」
VLOOKUP関数で最も多いトラブルのひとつが、「該当する値がマスタにあるのに、#N/Aや空欄になってしまう」という現象です。
実はこれ、見た目は同じでもExcel内部では一致していないということがよくあります。
【Excel】VLOOKUPで#N/Aエラーが表示される原因と解決方法
原因①:スペース(空白文字)の混入
■ 症状
- 商品コードや名前が同じに見えるのに、#N/Aが返ってくる
- 入力欄とマスタのどちらかに余計な空白(全角・半角)が入っている
■ 対処法
- 検索値・マスタ両方に
TRIM
関数を使ってスペースを除去
=VLOOKUP(TRIM(A2), マスタ!A2:B100, 2, FALSE)
- または、マスタ側にスペースが入っていないか確認する(特にコピー&ペースト後)
原因②:全角と半角の違い
■ 症状
- 検索値:「A001」
- マスタ:「A001」(※全角)
→ 見た目は似ていても、Excelはまったく別の値として認識
■ 対処法
ASC
やPHONETIC
関数で変換、または手動で修正- 入力値を半角で統一する
原因③:数値と文字列の違い
■ 症状
- A列に「00123」という商品コードがあるが、検索できない
- マスタでは「123」(数値)と扱われている
■ 対処法
- 検索列と検索値のデータ型を統一(文字列⇔数値)
- 明示的に文字列化する:
=VLOOKUP(TEXT(A2, "00000"), マスタ!A2:B100, 2, FALSE)
- もしくは、両方とも「セルの書式設定」を文字列に揃える
原因④:検索範囲の1列目に検索値がない
■ 症状
=VLOOKUP(A2, B2:C100, 2, FALSE)
のように、
検索値がB列にあるのに、A列を検索してしまう
■ 対処法
- VLOOKUPの仕様では、検索値は範囲の1列目にないといけない
- 検索列を一番左に含むように、範囲を修正する:
=VLOOKUP(A2, A2:C100, 3, FALSE)
原因⑤:列番号が間違っている、または範囲外
■ 症状
- 3列しかないのに列番号に「5」などを指定してしまっている
■ 対処法
- 列番号は検索範囲内で左から数えた番号を正しく指定する
原因⑥:検索方法が「TRUE」になっている
■ 症状
- 一致しないデータが返ってくる、または間違った結果になる
■ 対処法
- 検索方法は必ず「FALSE(完全一致)」を使う
=VLOOKUP(A2, マスタ!A2:B100, 2, FALSE)
原因⑦:見えない文字(改行・特殊文字など)
■ 症状
- コピー元がシステムやWebで、見えない改行や制御文字が混入
■ 対処法
CLEAN
関数を使って不要な文字を削除する
=VLOOKUP(CLEAN(A2), マスタ!A2:B100, 2, FALSE)
原因⑧:マスタに重複データがある
■ 症状
- 同じ商品コードが複数あり、正しい情報が引けない
- 最初に見つかった行だけを返してしまう
■ 対処法
- マスタの検索列に重複がないか確認
- 複数一致がある場合は FILTER関数(Excel365) や INDEX+MATCH を検討
■トラブルを防ぐチェックリスト
チェック項目 | 内容 |
---|---|
スペースの混入 | TRIM関数で除去 |
全角/半角の統一 | 入力規則で統一、またはTEXT関数で処理 |
データ型の一致 | 数値 vs 文字列の混在を避ける |
検索範囲の確認 | 検索列は必ず1列目に含める |
検索方法 | FALSE(完全一致)に設定 |
改行や特殊文字 | CLEAN関数で除去 |
マスタの重複 | 複数一致の可能性を確認 |
■ INDEX+MATCHを使う代替方法も検討しよう
VLOOKUPの制限(左方向に検索できない、列番号の管理が面倒)を回避するには、INDEX関数+MATCH関数の組み合わせが有効です。
=INDEX(マスタ!C2:C100, MATCH(A2, マスタ!A2:A100, 0))
- INDEXで値を取得
- MATCHで検索位置を特定
- より柔軟で構造がわかりやすい
■ まとめ:VLOOKUPでヒットしない原因は「見えない違い」にあり!
VLOOKUP関数は非常に便利ですが、ほんの小さな違い(スペース、書式、全角・半角など)でも結果が出ないことがあります。
この記事でご紹介したように、
- TRIM・TEXT・CLEANなどの補助関数を併用する
- 検索範囲と列番号を適切に指定する
- 検索方法は「FALSE(完全一致)」を使う
- INDEX+MATCHの導入も検討する
などの工夫で、「あるのに出ない」問題は確実に減らせます。
Excelの検索機能を正しく理解して、ミスのないデータ処理と作業効率化を実現していきましょう!