問い合わせ内容
いつものごとく関連部門からExcelについての問い合わせがありました。
セルに入力した郵便番号から別のセルに住所を表示することはできないの?
IME(日本語入力システム)の変換モードを利用すると、郵便番号を住所に変換して入力することができます。
- 文字を入力するセルをクリックした後、キーボードの[半角/全角]キーを押して日本語入力をONに設定する。
- 郵便番号を前3桁と後4桁をの間に「-」(ハイフン)を入れて、指定したセルに入力する。
- キーボードの[変換]キーを押すと変換リストに住所が表示されるので、住所を選択して、[Enter]キーを押す。
IMEの変換モードを利用して入力できますよ
いちいち変換しなくていい方法はないの?
VBAでプログラムを作成するしかないですね。
お願いします。どのくらいでできる?
げっ!
セルに入力した郵便番号を基に別のセルに住所を表示する
プログラムの構成
- セルに入力された郵便番号を受け取る(ハイフン”-“を取り除く)
- 郵便番号検索APIに郵便番号を渡し、結果を受け取る
- 受け取った結果を配列にセットする
- 受け取った結果がOKであれば配列にセットされた住所を引数に戻す
実行するプログラム
実際のコーデイング
Function 郵便番号住所(郵便番号)
Dim 郵便番号オブジェクト As Object, 配列
郵便番号 = Replace(郵便番号, “-“, “”) ‘ ←”-“ハイフンは取り除く
‘郵便番号検索API
Set 郵便番号オブジェクト = CreateObject(“MSXML2.XMLHTTP”)
郵便番号オブジェクト.Open “GET”, “http://zip.cgis.biz/csv/zip.php?zn=” & 郵便番号, False
郵便番号オブジェクト.Send
‘APIの結果を配列に代入する
配列 = Split(Replace(郵便番号オブジェクト.responseText, “”””, “”), “,”)
‘正常な値が返ってきた場合は配列の要素数が15になる
If UBound(配列) = 15 Then
郵便番号住所 = 配列(12) & 配列(13) & 配列(14)
Else
‘郵便番号が間違っている場合や未入力の場合は、空文字を返す
郵便番号住所 = “”
End If
End Function
完成
APIを利用しているため、インターネットに接続していないと結果が受け取れないので注意して下さい。