📊 Excel VBA Top100
🔄

AddSerialNumbers

データ処理

選択した先頭セルから下方向に連番を追加します

選択したセルを起点に、下方向へ自動的に連番(1, 2, 3…)を入力するマクロです。手作業での番号入力を不要にし、大量のデータ行にも瞬時に対応します。追加したい行数をダイアログで指定するだけで、指定件数分の連番が一括入力されます。名簿作成・注文リスト・在庫管理など、番号付きリストを頻繁に扱う業務で特に威力を発揮します。Excelの標準オートフィル機能よりも操作ステップが少なく、誰でも一度で正確に実行できます。内部では選択セルを起点にOffsetで1件ずつ値を書き込むシンプルな構造のため、動作が読みやすくカスタマイズも容易です。開始番号を変えたい、「No.1」のような接頭辞を付けたいといった変更もコードを数行直すだけで対応できます。並び替えや重複削除の後に番号を振り直す仕上げ処理としても定番で、RemoveDuplicatesやSortDataと組み合わせるとリスト管理の一連の流れを自動化できます。

AddSerialNumbers デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 連番を追加したい先頭セルを選択して AddSerialNumbers を実行します

🎯 活用シーン

  • ✓社員名簿や顧客リストに管理用の連番を一括付与したいとき
  • ✓注文データや在庫リストに行番号を追加して、後から参照しやすくしたいとき
  • ✓印刷用のレポートに項目番号を自動付与して、資料の読みやすさを高めたいとき
  • ✓アンケート回答や応募データに受付番号を振って、問い合わせ対応時にすぐ特定できるようにしたいとき
  • ✓テスト用のダミーデータを作成する際に、ID列を素早く用意したいとき

💡 実装のヒント

  • ▸連番を入力したい先頭セルだけを選択してから実行してください。範囲選択は不要です。
  • ▸途中で番号をリセットしたい場合は、先頭セルの値を任意の数値に変更してから再実行するとその数値から連番が始まります。
  • ▸行数の多いデータでも瞬時に処理されるため、1000行を超えるリストでも安心して使用できます。
  • ▸列方向(横方向)に連番を振りたい場合は、コード内のOffset(i - 1, 0)をOffset(0, i - 1)に変更するだけで対応できます。
  • ▸連番は値として入力されるため、数式のように再計算で変わる心配がなく、並び替え後もそのままIDとして使えます。

💻 VBAコード

' AddSerialNumbers
' -----------------
' Macro Name: AddSerialNumbers
' Description: 選択した先頭セルから下方向に連番を追加します
' Parameters: なし
' Returns: なし
' Usage: 連番を追加したい先頭セルを選択して AddSerialNumbers を実行します
' -----------------

Sub AddSerialNumbers()
    On Error GoTo ErrorHandler

    Dim startCell As Range
    Dim countStr As String
    Dim totalRows As Long
    Dim i As Long

    If TypeName(Selection) <> "Range" Then
        MsgBox "開始セルを選択してから実行してください", vbCritical, "エラー"
        Exit Sub
    End If

    Set startCell = Selection.Cells(1, 1)

    countStr = InputBox("連番の件数を入力してください", "件数", "10")
    If countStr = "" Then Exit Sub
    If Not IsNumeric(countStr) Then
        MsgBox "数値を入力してください", vbCritical, "エラー"
        Exit Sub
    End If

    totalRows = CLng(countStr)

    For i = 1 To totalRows
        startCell.Offset(i - 1, 0).Value = i
    Next i

    MsgBox totalRows & " 件の連番を追加しました", vbInformation, "完了"

    Exit Sub

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