ExcelのVLOOKUP関数を使っていると、同じ形式で作成した検索キーなのに、途中から突然「#N/A 検索値が見つかりません」というエラーが表示されることがあります。
特に「2N25001までは検索できるのに、2N26001から検索できない」といったように、一定の番号を境に結果が変わる場合は、VLOOKUPの設定よりも検索値や検索元データの中身に違いが発生している可能性があります。
この記事では、VLOOKUPで一部のデータだけ検索できない原因と、検索値が正しく一致するように修正する方法について詳しく解説します。
VLOOKUPで一部だけ#N/Aになる主な原因
VLOOKUPの#N/Aエラーは、検索値が検索範囲の左端列に存在しない場合に表示されます。しかし、見た目では同じ文字列でもExcel内部では別のデータとして扱われていることがあります。
例えば「2N25001」と「2N26001」は見た目では同じ形式ですが、片方が文字列、片方が数値として保存されていたり、余分な空白や見えない文字が含まれていたりすると一致しません。
一定の番号から突然エラーになる場合は、その境目で入力方法やデータ取得元が変わっていないか確認することが重要です。
検索値と検索元データの形式を確認する
VLOOKUPでは、検索する値と検索される側の値が完全一致している必要があります。
例えば検索キーを数式で作成している場合、以下のような違いが発生することがあります。
| 状態 | 例 |
|---|---|
| 文字列として保存 | “2N26001” |
| 数値を含む文字列 | “2N”&26001 |
| 余分な空白あり | “2N26001 “ |
見た目が同じでも、Excel上では別の値として認識されるため、VLOOKUPでは一致せず#N/Aになります。
数式で作成した検索キーによくある問題
検索キーを「2N」などの固定文字と番号を組み合わせて作成している場合、数式の設定によって桁数が変化することがあります。
例えば、以下のような数式を使用している場合があります。
=”2N”&A1
A1の数字が25001の場合は「2N25001」になりますが、26001になった時に別の場所から取得した値や書式設定の違いがあると、検索元データと一致しなくなる可能性があります。
また、番号を作成する途中で「2N026001」のようにゼロが追加されていたり、全角文字が混ざっていたりする場合も確認が必要です。
余分な空白や見えない文字を削除する方法
外部データからコピーした表では、セル内に不要な空白や改行コードが含まれていることがあります。
確認するには、検索元データのセルで以下のような関数を使います。
=LEN(A1)
LEN関数で文字数を確認し、見た目の文字数と一致しない場合は余分な文字が入っている可能性があります。
不要な空白を削除する場合は、TRIM関数を利用します。
=TRIM(A1)
修正後の値をコピーして「値の貼り付け」を行うことで、VLOOKUPの検索対象を正常化できます。
VLOOKUPの検索範囲設定を確認する
検索値に問題がない場合は、VLOOKUPの範囲指定も確認してください。
例えば、VLOOKUPの式が以下のようになっている場合があります。
=VLOOKUP(A1,$B$2:$D$500,2,FALSE)
この場合、検索範囲が500行目までしか指定されていなければ、501行目以降のデータは存在していても検索できません。
番号が25001までは検索できるが26001以降で失敗する場合、検索範囲の途中までしか指定していない可能性もあります。
検索方法は完全一致になっているか確認する
VLOOKUPの最後の引数は検索方法を指定します。正確な番号検索をする場合は「FALSE」を指定する必要があります。
例えば以下のような式です。
=VLOOKUP(A1,$B:$D,2,FALSE)
TRUEや省略した状態では近似一致検索になるため、番号データによっては期待した結果にならない場合があります。
原因を特定するための簡単な確認方法
問題が発生している検索値をコピーし、検索元データ側で「Ctrl+F」を使って直接検索してみます。
検索できない場合は、VLOOKUP以前にデータが一致していません。検索できる場合は、VLOOKUPの範囲指定や列番号などの式側を確認します。
また、「=A1=B1」のような比較式を使うことで、2つのセルが本当に同じ内容か確認できます。
まとめ
VLOOKUPで「途中の番号から突然#N/Aになる」場合、関数そのものよりも検索値と検索元データの違いが原因であることが多くあります。
特に確認したいポイントは、文字列と数値の違い、余分な空白や特殊文字、検索範囲の不足、検索方法の指定です。
見た目が同じでもExcel内部では異なるデータとして扱われることがあるため、LEN関数や比較式を使って中身を確認すると原因を早く特定できます。


コメント