Excel VBA | ADOで郵便番号から「都道府県+市区町村+町域」まで抽出する完全版の応用例

Excel VBA VBA
スポンサーリンク

日本郵便が公開している KEN_ALL.CSV(全国郵便番号簿)を利用すれば、郵便番号から 都道府県・市区町村・町域 を正確に判定できます。
ADO(ActiveX Data Objects)を使うと、CSVを「テーブル」として高速に検索できるため、大量データでも効率的に処理可能です。


コード例(ADO+郵便番号→住所3分割)

Sub PostalCodeToFullAddressWithADO()
    Dim conn As Object, rs As Object
    Dim filePath As String, code As String
    
    ' CSVファイルのパス(日本郵便公式のKEN_ALL.CSVをダウンロードして指定)
    filePath = "C:\data\KEN_ALL.CSV"
    
    ' ADO接続を作成
    Set conn = CreateObject("ADODB.Connection")
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
              "Data Source=" & Left(filePath, InStrRev(filePath, "\")) & ";" & _
              "Extended Properties=""text;HDR=No;FMT=Delimited"""
    
    ' A列の郵便番号を判定してB〜D列に住所を出力
    Dim lastRow As Long, i As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 1 To lastRow
        code = Replace(Cells(i, 1).Value, "-", "") ' ハイフン削除
        
        ' SQLで郵便番号を検索(KEN_ALL.CSVの仕様)
        ' fields(2)=郵便番号, fields(6)=都道府県, fields(7)=市区町村, fields(8)=町域
        Set rs = conn.Execute("SELECT F6, F7, F8 FROM [" & Mid(filePath, InStrRev(filePath, "\") + 1) & "] WHERE F3='" & code & "'")
        
        If Not rs.EOF Then
            Cells(i, 2).Value = rs.Fields(0).Value ' 都道府県
            Cells(i, 3).Value = rs.Fields(1).Value ' 市区町村
            Cells(i, 4).Value = rs.Fields(2).Value ' 町域
        Else
            Cells(i, 2).Value = "不明"
            Cells(i, 3).Value = "不明"
            Cells(i, 4).Value = "不明"
        End If
        rs.Close
    Next i
    
    conn.Close
End Sub
VB

解説

  • KEN_ALL.CSVの仕様
    • F3 → 郵便番号
    • F6 → 都道府県名
    • F7 → 市区町村名
    • F8 → 町域名
  • ADO接続 → CSVをSQLで検索できるため高速
  • 郵便番号を正規化 → ハイフン削除、7桁に統一
  • 結果をB〜D列に出力 → 都道府県・市区町村・町域を分割して保存

実行イメージ

A列(郵便番号)B列(都道府県)C列(市区町村)D列(町域)
1000001東京都千代田区千代田
1500002東京都渋谷区渋谷
2200012神奈川県横浜市西区みなとみらい
5300001大阪府大阪市北区梅田
8100003福岡県福岡市博多区博多駅前

実務での応用

  • 顧客リストの郵便番号から住所を一括補完
  • 配送ラベル作成 → 郵便番号から住所を自動生成
  • 地域別集計 → 都道府県・市区町村・町域単位で顧客数や売上を分析
  • 不正データ検出 → 存在しない郵便番号を「不明」として抽出

💡 この「ADO+郵便番号辞書」の完全版を使えば、全国規模の顧客データを高速に住所補完・分割できます。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました