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

Excel VBA VBA
スポンサーリンク

実務でよくある「住所録をきれいにまとめたい」というニーズに対応できるサンプルマクロを紹介します。
ここでは、郵便番号・都道府県・市区町村・番地・建物名が別々の列に入力されていると仮定し、それらを1セルに改行付きでまとめる処理を行います。


想定データ構成

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

マクロコード例

Sub 住所録自動整形()
    Dim lastRow As Long
    Dim i As Long
    Dim addr As String
    
    ' A列(氏名)を基準に最終行を取得
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row
    
    For i = 2 To lastRow ' 1行目は見出しと仮定
        addr = ""
        
        ' 郵便番号
        If Cells(i, "B").Value <> "" Then
            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

コードのポイント

  • lastRow で最終行を自動取得 → データ量が変わっても対応可能。
  • vbLf を使ってセル内改行。
  • WrapText = True を設定しないと改行が見えない。
  • 空欄セルはスキップするので、建物名がない場合でもきれいに整形される。

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

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

応用アイデア

  • 氏名と住所をまとめて「宛名ラベル」用に別シートへ出力。
  • Wordの差し込み印刷と組み合わせて封筒やはがきに印刷。
  • 郵便番号のフォーマット(例:1234567 → 123-4567)を自動整形する処理を追加。

👉 このマクロをベースに「宛名ラベル作成」や「請求書の住所欄整形」に発展させると、実務でかなり役立ちます。

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