VLOOKUPが表記ゆれで一致しない原因と対処法
「同じ会社名なのにVLOOKUPが#N/Aを返す」「見た目は同じ文字なのに一致しない」——このトラブルの多くは、目に見えない表記の違いが原因です。この記事では、VLOOKUPが一致しない典型的な原因と、その確認・対処方法を解説します。
原因1:検索方法が「完全一致」になっていない
VLOOKUPの4番目の引数(検索方法)を省略、またはTRUEにしていると、「近似一致」で検索されます。表記ゆれのあるデータでは近似一致は意図しない結果を返しやすいため、基本的には完全一致を明示的に指定します。
=VLOOKUP(A2,検索範囲,2,FALSE)
4番目の引数にFALSE(または0)を指定すると、一致しない場合は#N/Aを返すようになります。これは「一致しなかった」ことが明確にわかるので、意図しない近似一致より安全です。
原因2:見えない空白が入っている
コピー&ペーストや他システムからの取り込みで、セルの前後に見えない空白が入っていることがあります。この場合、目視では同じ文字列に見えても一致しません。TRIM関数で除去してから検索します。
=VLOOKUP(TRIM(A2),検索範囲,2,FALSE)
TRIM関数は半角スペースの連続や前後の空白を除去しますが、全角スペースは除去しません。全角スペースが混じっている可能性がある場合は、先にSUBSTITUTEで半角に置換してからTRIMをかけます。
原因3:全角・半角の違い
検索値が半角、検索範囲側が全角(またはその逆)になっていると一致しません。どちらかに統一してから比較します。
=VLOOKUP(ASC(A2),検索範囲,2,FALSE)
検索範囲側の表記も統一されている必要があります。検索値だけ変換しても、検索範囲側の表記がバラバラであれば根本的な解決にはなりません。
原因4:文字列と数値の型が違う
コードや番号を検索キーにしている場合、片方が「文字列の123」、もう片方が「数値の123」になっていると一致しません。VALUE関数で数値に変換するか、TEXT関数で文字列に変換して型を揃えます。
原因5:改行やコピー元特有の制御文字が混ざっている
Webページやシステムからコピーしたデータには、見た目には出ない制御文字(改行コードなど)が混入することがあります。CLEAN関数で多くの制御文字を除去できますが、CLEAN関数だけでは除去できない特殊な空白文字(いわゆるノーブレークスペース)もあるため、それでも一致しない場合はSUBSTITUTE関数で該当の文字コードを直接指定して置換します。
参考:大文字・小文字の違いは原因にならない
VLOOKUPは大文字・小文字を区別せずに一致判定を行うため、アルファベットの大文字小文字の違いだけで一致しないことはありません。この点は原因の切り分けから除外して大丈夫です。
手作業の限界
- 原因が1つとは限らず、空白・全角半角・型の違いが複合的に起きている場合、切り分けに時間がかかります
- 検索範囲側のデータを直接クリーニングしないと、検索値だけ直しても解決しないことが多いです
- 数十行程度の一時的な突き合わせであれば、本記事の対処法で十分です
表記ゆれを解消してから照合する
会社名・住所などのマスタデータ自体に表記ゆれが多い場合、都度VLOOKUPを工夫するより、元データを整えてしまう方が根本的です。リストクリーナーは、法人格表記の統一・全角半角の統一・住所の正規化を一括で行い、突き合わせしやすいデータに整えます。データはブラウザ内で処理され外部に送信されません。無料で100行まで試せます。
無料でリストを整えてみる- XLOOKUPでも同じ原因で一致しませんか?
- はい。XLOOKUPもVLOOKUP同様、既定で完全一致検索を行いますが、空白・全角半角・型の違いによる不一致はVLOOKUPと同じ理由で起こります。対処法(TRIM・ASC等での統一)も共通です。
- IFERRORで#N/Aを非表示にすれば解決ですか?
- IFERRORはエラー時の表示を代替値に変えるだけで、データが一致しない根本原因は解決しません。件数が合わなくなるため、原因を特定して直すことをおすすめします。