【Excel VBA】値の入っているセルに連番を振る方法

ExcelVBA

はじめに

既に値が入っているセルに連番を振りたいと思ったことはありませんか。そのような場合、次のコードで実現することができます。

連番を振るコード

Sub test()
    
    Dim cnt As Long
    cnt = 1
    
    Dim s As Variant
    For Each s In Selection.Cells
        
        Cells(s.Row, s.Column).Value = cnt & "." & Cells(s.Row, s.Column).Value
        cnt = cnt + 1
        
    Next
        
End Sub

実行結果(連番を付与)

選択範囲のセルに連番が書き込まれました!

先ほどの連番を消すコード

先ほど書き込んだ連番を消したいときは以下のコードで消すことができます。

Sub test2()
    
    Dim pos As Long
    Dim s As Variant
    For Each s In Selection.Cells
    
        ' 最初のカンマの位置を取得
        pos = InStr(Cells(s.Row, s.Column).Value, ".")
        Cells(s.Row, s.Column).Value = Mid(Cells(s.Row, s.Column).Value, pos + 1)
    
    Next
    
End Sub

実行結果(連番を消去)

連番を消すことができました。

※注意:先頭のコンマまでの文字が消えますので今回ご紹介した方法でつけた連番以外を消すときは「連番.(半角コンマ)」になっているかご確認ください。

おわりに

既に値が入っている場合、そのセルに連番を振りたいと思っても、なかなか単純にはいかないかもしれません。今回の方法を使用すれば簡単に連番を振ることができますね!お試しください。

ではまた。

コメント