|
(1)A列にデータが入っています。(ex.A,B,C,D,あるいは空欄)
(2)データは同じ値が連続して入力されていたり、ばらばらになって入力されていたりします。
(希望する動作)同じデータが連続している場合にはB列に1から連番を付ける。
連続したデータが途切れたり、変わったりした場合は次のデータのある行から1から新たに連番を付ける。
(よってデータが不連続な場合は番号は1となります。)
(質問)下のコードで動作はしますが、もっとスマートな書き方はないものでしょうか?
Sub Test()
Dim i As Integer
On Error Resume Next
For i = 1 To 30 '試しに1〜30行目まで。
If Cells(i, 1) <> Cells(i + 1, 1) Then 'A列当該行とその直下行のデータが異なっていればB列に1を置く。
Cells(i + 1, 2) = "1"
End If
If Cells(i, 2) = "" And (Cells(i - 1, 2) = "1" Or Cells(i - 1, 2) <> "") Then 'B列当該行=空欄でさらにその直上行=1、または空欄以外の場合
Cells(i, 2) = Cells(i - 1, 2).Value + 1 'B列当該行に直上行の数値に+1した数値を入力する。
ElseIf Cells(i, 1) = "" Then 'A列当該行=空欄の場合は空欄とする。
Cells(i, 2) = ""
End If
Next i
End Sub
|
|