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

Excel VBA VBA
スポンサーリンク

郵便番号が未入力の人を自動でリストアップするチェックマクロ

住所録を扱うときに「郵便番号が抜けている人」を確認したい場面はよくあります。
以下のマクロでは、郵便番号が空欄の行を自動で抽出して別シートに一覧化します。


マクロコード例

Sub 郵便番号未入力チェック()
    Dim lastRow As Long
    Dim i As Long
    Dim wsSrc As Worksheet, wsDest As Worksheet
    Dim destRow As Long
    
    ' 元データのシートを設定(例:Sheet1)
    Set wsSrc = ThisWorkbook.Sheets("Sheet1")
    
    ' 出力先シートを用意(なければ新規作成)
    On Error Resume Next
    Set wsDest = ThisWorkbook.Sheets("未入力リスト")
    On Error GoTo 0
    If wsDest Is Nothing Then
        Set wsDest = ThisWorkbook.Sheets.Add
        wsDest.Name = "未入力リスト"
    Else
        wsDest.Cells.Clear ' 既存の内容をクリア
    End If
    
    ' 見出しを設定
    wsDest.Range("A1").Value = "氏名"
    wsDest.Range("B1").Value = "郵便番号"
    wsDest.Range("C1").Value = "行番号"
    
    destRow = 2
    
    ' A列:氏名、B列:郵便番号 と仮定
    lastRow = wsSrc.Cells(wsSrc.Rows.Count, "A").End(xlUp).Row
    
    For i = 2 To lastRow ' 1行目は見出しと仮定
        If Trim(wsSrc.Cells(i, "B").Value) = "" Then
            wsDest.Cells(destRow, "A").Value = wsSrc.Cells(i, "A").Value
            wsDest.Cells(destRow, "B").Value = "(未入力)"
            wsDest.Cells(destRow, "C").Value = i
            destRow = destRow + 1
        End If
    Next i
    
    MsgBox "郵便番号が未入力の人を " & destRow - 2 & " 件リストアップしました。", vbInformation
End Sub
VB

コードのポイント

  • 元データ: Sheet1 の A列に氏名、B列に郵便番号があると仮定。
  • 出力先: 「未入力リスト」というシートを自動作成(既にあれば上書き)。
  • リスト内容: 氏名・郵便番号(未入力と表示)・元の行番号を出力。
  • Trim関数: 空白だけのセルも未入力扱いにできる。

実行後のイメージ(未入力リストシート)

氏名郵便番号行番号
山田太郎(未入力)5
佐藤花子(未入力)12

応用アイデア

  • 郵便番号が「7桁以外」の人も同時にチェックする。
  • 未入力者を色付きで元シートにマーキングする。
  • 氏名だけでなく住所も一緒に出力して確認しやすくする。
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました