〖ExcelVBA〗空白を無視して連番を自動で振るマクロ|削除や並び替え後もズレない

ExcelVBA

Excelで名簿や一覧表を管理していると、 連番(No.)を振り直したい場面はよくあります。

  • 途中の行を削除した
  • 並び替えをした
  • 抽出結果だけを残した

こうなると、連番が「1, 2, 4, 7…」のようにバラバラになりがちです。

そこで今回は、空白行を無視して、きれいに連番を振り直すExcelVBAマクロをご紹介します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • 空白行をスキップして連番を振る
  • 途中に空白があってもズレない
  • 指定列に連番を自動入力
  • 何度でも再実行できる

今回使用するシート例(途中空白行あり

今回はこのシートを使用します。
4行目をわざと空白行として、ただしく動作するか検証していきます。
※シート名は任意で問題ありません。


空白を無視して連番を振るマクロ(コピペOK)

以下のコードを標準モジュールに貼り付けてください。

Option Explicit

Sub AutoNumberIgnoreBlank()

    Dim ws As Worksheet
    Dim lastRow As Long
    Dim r As Long
    Dim no As Long

    ' ===== 設定 =====
    Set ws = ActiveSheet
    Const TARGET_COL As Long = 1   ' 連番を振る列(A列=1)
    Const CHECK_COL As Long = 2    ' 空白判定に使う列(氏名列など)
    ' =================

    ' 最終行を取得(CHECK_COL基準)
    lastRow = ws.Cells(ws.Rows.Count, CHECK_COL).End(xlUp).Row

    no = 1

    For r = 2 To lastRow

        ' チェック列が空白でなければ連番を振る
        If ws.Cells(r, CHECK_COL).Value <> "" Then
            ws.Cells(r, TARGET_COL).Value = no
            no = no + 1
        Else
            ' 空白行は連番をクリア
            ws.Cells(r, TARGET_COL).ClearContents
        End If

    Next r

    MsgBox "連番の再作成が完了しました。", vbInformation

End Sub

コード解説(初心者向け)

① 空白判定に使う列を決める

Const CHECK_COL As Long = 2

この列にデータが入っている行だけを「有効な行」として扱います。
通常は「氏名」「ID」「商品名」など、必ず入る列を指定します。


② 空白行はカウントしない

If ws.Cells(r, CHECK_COL).Value <> "" Then

この条件により、 途中に空白行があっても連番がズレません


③ 再実行しても安心

毎回 A列を一度クリアしながら振り直すので、 並び替え・抽出後でも何度でも正しく再採番できます。


よくある応用

① ヘッダーがない表の場合

ループ開始を For r = 1 To lastRow に変更してください。

② 抽出後のデータだけ連番を振りたい

オートフィルターと組み合わせて、 表示されている行だけに連番を振ることも可能です(応用編)。

③ 連番ではなく「管理番号」を振りたい

ws.Cells(r, TARGET_COL).Value = "ID-" & Format(no, "000")

→ ID-001、ID-002 のような形式にもできます。


実行手順

  1. 対象のExcelシートを表示
  2. Alt + F11 → 標準モジュールを追加
  3. マクロを貼り付け
  4. AutoNumberIgnoreBlank を実行

まとめ:連番は「空白無視」が実務では正解

連番は一見簡単そうですが、 削除・並び替え・抽出をするとすぐ崩れます。

  • 空白行を無視して採番
  • 基準列で「有効行」を判定
  • 何度でも再実行できる

今回のVBAを使えば、 実務で使える安定した連番処理が簡単に実装できます。

ぜひ、名簿・管理表・一覧表で活用してみてください。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました