郵便番号から住所を自動入力する方法(エクセル・VLOOKUP)
郵便番号は分かっているのに都道府県・市区町村の欄が空欄になっているリストは、日本郵便が無料公開している郵便番号データとVLOOKUPを組み合わせれば自動入力できます。この記事ではその手順と、自動入力できる範囲・できない範囲を解説します。
手順1:日本郵便の郵便番号データを用意する
- 日本郵便の郵便番号データダウンロードページから読み仮名データ(またはCSV形式)をダウンロード
- ダウンロードしたCSVをExcelで開き、作業ブックに読み込む(郵便番号・都道府県・市区町村・町域名などの列がある)
配布されているCSVはヘッダー行が無く、Shift_JISで保存されているため、そのままダブルクリックで開くと1列にまとまってしまうことがあります。「データ」タブ>「テキストまたはCSVから」で文字コードを指定して読み込むと崩れにくくなります。
手順2:VLOOKUPで都道府県・市区町村を取得する
郵便番号データのシートで、A列に郵便番号、B列に都道府県、C列に市区町村が入っているとします。リスト側の郵便番号を基準に、次の数式で取得します。
=VLOOKUP(A2,郵便番号データ!A:C,2,FALSE)(都道府県)
=VLOOKUP(A2,郵便番号データ!A:C,3,FALSE)(市区町村)
郵便番号の桁数・ハイフンの有無が、自分のリストと郵便番号データ側で揃っていないと一致しません(「150-0002」と「1500002」など)。事前にどちらかの形式に統一してから照合してください。
丁目・番地・号は自動入力できない
郵便番号は多くの場合「町域」までしか特定できず、同じ郵便番号でも丁目・番地は複数存在します。そのため、丁目・番地・号・建物名までを郵便番号から自動入力することはできません。この部分は手入力、または既に住所が分かっている場合の表記統一(正規化)で対応することになります。
手作業の限界
- 郵便番号データは町域が分割・統合されると更新が必要になります——古いデータのまま使い続けると、新しくできた町域で一致しないことがあります
- 郵便番号の桁数・ハイフンの有無を事前に統一する手間がかかります
- 都道府県・市区町村の補完だけであれば、本記事の方法で十分対応できます
丁目・番地レベルの表記ゆれもまとめて正規化
すでに丁目・番地まで入っている住所データの「1-7-1」と「1丁目7番1号」のような表記ゆれを統一したい場合は、リストクリーナーが郵便番号ではなく住所の文字列そのものを解析して正規化します。データはブラウザ内で処理され外部に送信されません。無料で100行まで試せます。
無料で住所を正規化してみる- 郵便番号データは有料ですか?
- 日本郵便が無料で公開しているデータを利用できます。定期的に更新されるため、最新版をダウンロードして使うことをおすすめします。
- 1つの郵便番号に複数の町域が対応する場合はどうなりますか?
- VLOOKUPは一致した最初の行を返すため、複数の町域が同じ郵便番号に対応する場合は正しい町域が選ばれないことがあります。該当する郵便番号は目視で確認することをおすすめします。