エクセルで郵便番号から住所を自動入力する方法|関数・XLOOKUP・住所から郵便番号も

エクセルで郵便番号から住所を自動入力する方法|関数・XLOOKUP・住所から郵便番号も

エクセルには、郵便番号を住所に変える専用の関数はありません。それでも、WEBSERVICE関数で郵便番号の検索サービスから住所を取り出す方法と、郵便番号の一覧表をXLOOKUPで引く方法を使えば、郵便番号を入れるだけで住所を自動で表示できます。一覧表を使う方法なら、住所から郵便番号を探す(逆引き)こともできます。

この記事では、どちらの方法も実際にエクセルで動かした結果の画面を使って、式のしくみと注意点を説明します。

目次

郵便番号から住所|方法の比べ方

方法できること向いている場面注意点
WEBSERVICE関数+郵便番号検索サービス郵便番号→住所(全国どこでも)件数が少なく、ネットにつながる環境Windows版のExcelのみ。インターネット接続が必要
郵便番号の一覧表+XLOOKUP郵便番号→住所、住所→郵便番号ネットを使えない・大量のデータ一覧表(日本郵便の郵便番号データなど)を用意する

方法1:WEBSERVICE関数で郵便番号から住所を表示する

WEBSERVICE関数は、インターネット上のサービスに問い合わせて、その結果を文字として受け取る関数です。ここでは、郵便番号から住所を返す無料の検索サービス(zipcloud)を使います。

1
A列に郵便番号を入力します。ハイフンがあってもなくても、数値で入っていても使えます。
2
住所を表示したいセル(B2)に、次の式を入力して Enter を押します。B3から下へは、B2をコピーします。
=IFERROR(LET(j,WEBSERVICE("https://zipcloud.ibsnet.co.jp/api/search?zipcode="&SUBSTITUTE(TEXT(A2,"0000000"),"-","")),a,LAMBDA(k,TEXTBEFORE(TEXTAFTER(j,""""&k&""": """),"""")),a("address1")&a("address2")&a("address3")),"見つかりません")
エクセルのWEBSERVICE関数で郵便番号から住所を表示した表
①郵便番号から、都道府県・市区町村・町域をつないだ住所が表示されます。②存在しない郵便番号は「見つかりません」になります。

式のしくみ

部分意味
SUBSTITUTE(TEXT(A2,”0000000″),”-“,””)郵便番号を7けたの数字だけにします(先頭の0が消えた数値やハイフン付きにも対応)。
WEBSERVICE(“…?zipcode=”&…)検索サービスに郵便番号を送り、住所のデータ(JSON形式の文字)を受け取ります。
LAMBDA(k, TEXTBEFORE(TEXTAFTER(j, …)))受け取った文字から、「address1」などの項目の値を切り出す小さな関数を作ります。
a(“address1”)&a(“address2”)&a(“address3”)都道府県・市区町村・町域をつなげます。
IFERROR(…,”見つかりません”)該当する住所がないときの表示です。
ポイントWEBSERVICE関数は、Windows版のExcelで使えます(Mac版・Web版では使えません)。また、外部のサービスを使うため、インターネットに接続していること、サービスの利用規約の範囲で使うことが前提です。数千件のような大量のデータは、次の「一覧表の方法」が向いています。

方法2:郵便番号の一覧表とXLOOKUPで住所を表示する

郵便番号・都道府県・市区町村・町域を並べた一覧表を別のシートに用意し、XLOOKUP関数で引きます。全国の郵便番号は、日本郵便のWebサイトで公開されている「郵便番号データ」を使うと一覧にできます。練習用ファイルには、6件だけの一覧を入れてあります。

エクセルの郵便番号一覧のシート
「郵便番号一覧」シートの例です。郵便番号は文字列(例:060-0001)で入れておきます。

住所を表示したいセル(B2)に、次の式を入力します。

=XLOOKUP(A2,郵便番号一覧!$A$2:$A$7,郵便番号一覧!$B$2:$B$7&郵便番号一覧!$C$2:$C$7&郵便番号一覧!$D$2:$D$7,"見つかりません")
エクセルのXLOOKUPで郵便番号一覧から住所を取り出した表
①一覧にある郵便番号は、住所がつながって表示されます。②一覧にない郵便番号は「見つかりません」になります。

戻り値の範囲を B列&C列&D列 のようにつなぐと、都道府県・市区町村・町域を1つの住所としてまとめて返せます。VLOOKUPでも作れますが、列をつないで返せるXLOOKUPのほうが式が短くなります。

住所から郵便番号を探す方法(逆引き)

一覧表を使えば、反対に住所から郵便番号も探せます。XLOOKUPの「検索範囲」に、つないだ住所の列を指定します。

=XLOOKUP(D2,郵便番号一覧!$B$2:$B$7&郵便番号一覧!$C$2:$C$7&郵便番号一覧!$D$2:$D$7,郵便番号一覧!$A$2:$A$7,"見つかりません")
エクセルのXLOOKUPで住所から郵便番号を逆引きした表
①住所に合う郵便番号が表示されました。住所は、一覧と一字一句同じ書き方で入力する必要があります。

「1丁目2-3」のように番地まで入った住所は、一覧と完全には一致しません。その場合は、番地より前の部分(町域まで)を取り出してから検索します。文字の取り出し方は特定の文字より後ろ(以降)を抽出する方法も参考にしてください。

うまくいかないときの確認表

症状考えられる原因対処
WEBSERVICE関数が使えないMac版・Web版のExcelを使っているWindows版のExcelを使うか、一覧表の方法にする。
住所が表示されず「見つかりません」のままインターネットにつながっていない接続を確認して、Ctrl+Alt+F9 で再計算する。
正しい郵便番号なのに「見つかりません」郵便番号が6けた以下・全角になっているTEXT関数で7けたにそろえる。全角は半角に変換する。
XLOOKUPで見つからない一覧の郵便番号が数値、検索値が文字列(またはその逆)どちらも「060-0001」のような文字列にそろえる。
住所から郵便番号が見つからない住所の書き方が一覧と違う(丁目・番地・空白など)一覧と同じ書き方にそろえるか、町域までで検索する。

よくある質問

郵便番号の先頭の0が消えてしまいます

数値として入力されたためです。表示形式やハイフン付きの入力で直せます(エクセルの郵便番号|先頭の0・ハイフン)。この記事の方法1の式は、0が消えた数値でもTEXT関数で7けたに戻してから検索します。

住所を都道府県・市区町村に分けたいときは?

方法1では、a(“address1”) だけにすると都道府県、a(“address2”) だけにすると市区町村が取り出せます。入力済みの住所を分ける方法は、住所を都道府県・市町村に分割する方法を見てください。

練習用Excelファイル(無料ダウンロード)
WEBSERVICE関数で住所を表示する「住所録」シートと、郵便番号一覧+XLOOKUPで住所・郵便番号を引く練習ができるファイルです(住所はすべて公開されている郵便番号の町域です)。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

あわせて読みたい:郵便番号・住所の関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次