背景・目的

下図のようなデータ一覧表を考える。

「番号」列の開始行から最終行までに、自動で連番を振るマクロを作成したい。

【Excel VBA(マクロ)】データ一覧表の指定列の開始行から最終行までに自動で連番を振る

単に連番を振るだけであれば、手入力したり、ROW関数を使えばよい。

ただ、それだと、行の挿入・入れ替えやフィルター、並び替え時に、問題が起こることがある。

そこで、マクロで連番を振れるようにしたい。

方法

「番号」列の開始行と最終行を求める方法を考える。

開始行は、基本的に固定のはずで、今回の例だと「3」となる。

最終行は、「名前」列の最終行に対応するはずなので、それを利用する。

Sub 連番を振る()
    
    '「番号」列の開始行
    Const NumRowStart As Integer = 3
    '「番号」列の最終行
    Dim NumRowEnd As Integer
    '「番号」列の列番号
    Const NumCol As Integer = 2
    
    '「名前」列の列番号
    Const NameCol As Integer = 3
    
    '「番号」列の最終行=「名前」列の最終行を求める
    NumRowEnd = ActiveSheet.Cells(Rows.Count, NameCol).End(xlUp).Row

    'カウンタ
    Dim i As Integer
    
    '連番
    Dim Num As Integer
    Num = 1
    
    '連番を振る
    For i = NumRowStart To NumRowEnd
        ActiveSheet.Cells(i, NumCol).Value = Num
        Num = Num + 1
    Next i

End Sub

このコードを実行すると、下図のように連番が振られる。

【Excel VBA(マクロ)】データ一覧表の指定列の開始行から最終行までに自動で連番を振る

投稿時の環境

  • Windows11 Home Ver. 24H2
  • Excel for Microsoft 365 Ver. 2505