Excel VBA | Excel VBAで作る「住所録の自動整形マクロ」

Excel VBA VBA
スポンサーリンク

郵便番号を自動フォーマット(ハイフン挿入)する住所録整形マクロ

実務でよくある「郵便番号が 1234567 のように7桁続けて入力されている」ケースを、自動的に 123-4567 の形式に整えるマクロです。
前回の住所録整形マクロに「郵便番号の自動フォーマット」を組み込みました。


📋 想定データ構成

  • A列: 氏名
  • B列: 郵便番号(例:1234567 または 123-4567)
  • C列: 都道府県
  • D列: 市区町村
  • E列: 番地
  • F列: 建物名(任意)
  • G列: 整形後の住所(出力先)

マクロコード例

Sub 住所録自動整形_郵便番号フォーマット()
    Dim lastRow As Long
    Dim i As Long
    Dim addr As String
    Dim zipCode As String
    
    ' A列(氏名)を基準に最終行を取得
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row
    
    For i = 2 To lastRow ' 1行目は見出しと仮定
        addr = ""
        
        ' --- 郵便番号の整形 ---
        zipCode = Replace(Cells(i, "B").Value, "-", "") ' ハイフンを除去
        If Len(zipCode) = 7 And IsNumeric(zipCode) Then
            zipCode = Left(zipCode, 3) & "-" & Right(zipCode, 4)
            addr = "〒" & zipCode
        ElseIf Cells(i, "B").Value <> "" Then
            ' 7桁以外や不正値はそのまま表示
            addr = "〒" & Cells(i, "B").Value
        End If
        
        ' --- 都道府県 ---
        If Cells(i, "C").Value <> "" Then
            If addr <> "" Then addr = addr & vbLf
            addr = addr & Cells(i, "C").Value
        End If
        
        ' --- 市区町村 ---
        If Cells(i, "D").Value <> "" Then
            If addr <> "" Then addr = addr & vbLf
            addr = addr & Cells(i, "D").Value
        End If
        
        ' --- 番地 ---
        If Cells(i, "E").Value <> "" Then
            If addr <> "" Then addr = addr & vbLf
            addr = addr & Cells(i, "E").Value
        End If
        
        ' --- 建物名(任意) ---
        If Cells(i, "F").Value <> "" Then
            If addr <> "" Then addr = addr & vbLf
            addr = addr & Cells(i, "F").Value
        End If
        
        ' --- 整形後の住所をG列に出力 ---
        Cells(i, "G").Value = addr
        Cells(i, "G").WrapText = True ' 折り返し表示を有効化
    Next i
    
    MsgBox "住所録の整形が完了しました!", vbInformation
End Sub
VB

コードのポイント

  • Replace(..., "-", "") で入力済みのハイフンを一旦削除。
  • Len(zipCode) = 7 かつ IsNumeric(zipCode) で7桁の数字か確認。
  • 正しい場合は Left(...,3) & "-" & Right(...,4)123-4567 に変換。
  • 不正な値(桁数違い・数字以外)はそのまま出力してユーザーに気づかせる。

実行後のイメージ(G列)

〒123-4567
東京都
中央区銀座1-2-3
サンプルマンション101号室

応用アイデア

  • 郵便番号が空欄なら「〒未入力」と表示してチェック用にする。
  • 郵便番号を自動で「文字列型」に変換して、先頭の0が消えないようにする。
  • 郵便番号から都道府県を自動補完する仕組み(郵便番号辞書を使う)に発展させる。
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました