エクセルには、郵便番号を住所に変える専用の関数はありません。それでも、WEBSERVICE関数で郵便番号の検索サービスから住所を取り出す方法と、郵便番号の一覧表をXLOOKUPで引く方法を使えば、郵便番号を入れるだけで住所を自動で表示できます。一覧表を使う方法なら、住所から郵便番号を探す(逆引き)こともできます。
この記事では、どちらの方法も実際にエクセルで動かした結果の画面を使って、式のしくみと注意点を説明します。
郵便番号から住所|方法の比べ方
| 方法 | できること | 向いている場面 | 注意点 |
|---|---|---|---|
| WEBSERVICE関数+郵便番号検索サービス | 郵便番号→住所(全国どこでも) | 件数が少なく、ネットにつながる環境 | Windows版のExcelのみ。インターネット接続が必要 |
| 郵便番号の一覧表+XLOOKUP | 郵便番号→住所、住所→郵便番号 | ネットを使えない・大量のデータ | 一覧表(日本郵便の郵便番号データなど)を用意する |
方法1:WEBSERVICE関数で郵便番号から住所を表示する
WEBSERVICE関数は、インターネット上のサービスに問い合わせて、その結果を文字として受け取る関数です。ここでは、郵便番号から住所を返す無料の検索サービス(zipcloud)を使います。
=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")),"見つかりません")

式のしくみ
| 部分 | 意味 |
|---|---|
| SUBSTITUTE(TEXT(A2,”0000000″),”-“,””) | 郵便番号を7けたの数字だけにします(先頭の0が消えた数値やハイフン付きにも対応)。 |
| WEBSERVICE(“…?zipcode=”&…) | 検索サービスに郵便番号を送り、住所のデータ(JSON形式の文字)を受け取ります。 |
| LAMBDA(k, TEXTBEFORE(TEXTAFTER(j, …))) | 受け取った文字から、「address1」などの項目の値を切り出す小さな関数を作ります。 |
| a(“address1”)&a(“address2”)&a(“address3”) | 都道府県・市区町村・町域をつなげます。 |
| IFERROR(…,”見つかりません”) | 該当する住所がないときの表示です。 |
方法2:郵便番号の一覧表とXLOOKUPで住所を表示する
郵便番号・都道府県・市区町村・町域を並べた一覧表を別のシートに用意し、XLOOKUP関数で引きます。全国の郵便番号は、日本郵便のWebサイトで公開されている「郵便番号データ」を使うと一覧にできます。練習用ファイルには、6件だけの一覧を入れてあります。

住所を表示したいセル(B2)に、次の式を入力します。
=XLOOKUP(A2,郵便番号一覧!$A$2:$A$7,郵便番号一覧!$B$2:$B$7&郵便番号一覧!$C$2:$C$7&郵便番号一覧!$D$2:$D$7,"見つかりません")

戻り値の範囲を 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,"見つかりません")

「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”) だけにすると市区町村が取り出せます。入力済みの住所を分ける方法は、住所を都道府県・市町村に分割する方法を見てください。

コメント