📊 Excel VBA Top100
⚡

AutoNumberRows

自動化

A列に行番号(1始まり)を自動入力します(ヘッダー行を除く)

データが入力されている行を自動検出し、指定した列に連番を自動付与するマクロです。AddSerialNumbersとの違いは、件数をダイアログで入力する必要がなく、データ行を自動カウントして連番を付けることです。データを追加・削除した後に連番を振り直す用途に最適です。A列に番号を付けながらB列以降にデータが入るような構造の表で、番号を自動管理したい場合に役立ちます。内部ではデータが入力されている最終行をEnd(xlUp)で検出し、対象範囲に対してループで連番を書き込んでいます。AutoFillSeriesが指定件数分を生成するのに対し、本マクロはデータの実在行数を自動判定するため、行の増減があるたびに再実行するだけで正しい連番を維持できます。件数を都度入力する手間がなく、ボタンに登録しておけばワンクリックで最新の状態に更新できます。

AutoNumberRows デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: AutoNumberRows を実行すると、A2セルから最終データ行まで連番が入力されます

🎯 活用シーン

  • ✓行の追加・削除後に番号がずれてしまったリストに、正しい連番を一括で振り直したいとき
  • ✓データをソートした後に行番号が混乱した状態を解消して、番号順に整理されたリストに戻したいとき
  • ✓新規に作成したデータベース形式の表に、管理用の連番をワンクリックで付与したいとき
  • ✓日々増減する受注リストの管理番号を、実行するたびに正しい件数で振り直したいとき
  • ✓アンケート回答データを集計する前に、欠番のない連番を自動付与して集計ミスを防ぎたいとき

💡 実装のヒント

  • ▸連番の付与基準とする列(通常はデータが必ず入力されている列)を指定することで、空行をスキップして番号を付けることができます。
  • ▸数式で連番を管理する(=ROW()-1など)方法もありますが、このマクロは値として入力するため、行の並び替えをしても番号が変わりません。
  • ▸1から始まる連番以外にも、100から始める・10ずつ増加するなどのカスタム連番もマクロのコードを修正することで実現できます。
  • ▸特定の条件(空白行を除く等)で連番を振りたい場合は、判定用の列を指定するロジックに変更してください。
  • ▸SortDataで並び替えた直後に本マクロを実行すると、常に見た目の順序と一致した番号を保てます。

💻 VBAコード

' AutoNumberRows
' -----------------
' Macro Name: AutoNumberRows
' Description: A列に行番号(1始まり)を自動入力します(ヘッダー行を除く)
' Parameters: なし
' Returns: なし
' Usage: AutoNumberRows を実行すると、A2セルから最終データ行まで連番が入力されます
' -----------------

Sub AutoNumberRows()
    On Error GoTo ErrorHandler

    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long

    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, 2).End(xlUp).Row

    If lastRow < 2 Then
        MsgBox "B列にデータが見つかりません", vbCritical, "エラー"
        Exit Sub
    End If

    For i = 2 To lastRow
        ws.Cells(i, 1).Value = i - 1
    Next i

    MsgBox (lastRow - 1) & " 行に番号を入力しました", vbInformation, "完了"

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub