Excelで住所に番地が入っていても郵便番号を自動表示する方法

Excel

Excelで郵便番号データを利用して住所から郵便番号を取得する場合、番地が含まれる住所ではVLOOKUP関数が#N/Aエラーを返すことがあります。これは、顧客住所と郵便局からダウンロードした住所データが完全一致しないためです。本記事では、番地を含む住所でも郵便番号を取得する方法を詳しく解説します。

番地が原因でVLOOKUPが失敗する理由

通常のVLOOKUPでは完全一致(FASLE)を使うと、検索値と参照範囲の文字列が一字一句一致しない場合、エラーが返ります。

顧客データに番地(数字)が含まれている場合、郵便局の住所データは町名までしか登録されていないことが多く、この差異が原因で一致しません。

LEFT関数や検索範囲の調整で対応

番地以降を無視して町名までで検索する方法として、LEFT関数で文字列を切り取る手段があります。

例として、=VLOOKUP(LEFT(A2, LEN(A2)-3), 郵便局データ範囲, 2, FALSE) のように番地部分を削除した住所で検索することが可能です。文字数調整は番地の長さに応じて調整します。

補助列を使った部分一致検索

顧客住所列とは別に、郵便局データ側に町名だけの補助列を作成し、そこを検索キーにする方法もあります。

例えば、=VLOOKUP(TRUE, ISNUMBER(SEARCH(郵便局町名, 顧客住所)), 郵便番号列, 0) のように配列関数を使うことで、番地を含む住所でも部分一致検索が可能です。

VBAを利用した自動検索

多数の顧客データがある場合、VBAで住所の町名部分だけを抽出し、郵便番号を自動で検索して入力する方法も便利です。

簡単な例として、For Each文で顧客住所をループ処理し、InStr関数で町名の部分一致を確認、該当する郵便番号を取得するマクロを作成できます。

まとめ

Excelで番地が含まれる住所から郵便番号を取得する場合、完全一致のVLOOKUPだけでは対応できません。LEFT関数や補助列による部分一致、もしくはVBAを活用することで、番地を含む住所でも郵便番号を正しく取得できます。データ量や運用方法に応じて最適な方法を選ぶことが重要です。

コメント

タイトルとURLをコピーしました