需求:判断序号行的数据是否连续,在开头字段写入序号行中连续数据的第一个数,结尾字段写入连续数据的最后一个数。 请见下图:
宏:
Sub 判断是否连续()
Dim i As Integer
Dim s As Integer
'写入开头第一个数据
Cells(2, "C") = Cells(2, "B")
'记录结尾数据需要写入的行数
s = 2
For i = 3 To 30
'判断下一行数据和上一行数据是否连续
If Cells(i, "B").Value - 1 <> Cells(i - 1, "B") Then
'如果不连续则在结尾单元格写入上一行的数据
Cells(s, "D") = Cells(i - 1, "B")
'同时写入下一连续数据的开始数
Cells(i, "C") = Cells(i, "B")
' 保存结尾数据的行数
s = i
End If
Next i
End Sub
对上面的脚本进行修改,自动判断原有数据的行数和列数,防止覆盖。
需要判断的数据需要在B列中、数值型、从小到大排序,否则不正常。
Sub 判断是否连续()
Dim i As Integer
Dim s As Integer
Dim hs As Integer
Dim ls As Integer
'获取现有数据行数+1,
hs = Range("A66666").End(xlUp).Row + 1
'在现有数据列在向后3列写入数据
ls = Range("IV1").End(xlToLeft).Column + 3
'写入列标题
Cells(1, ls) = "起号"
Cells(1, ls + 1) = "之号"
'需要判断连续的数据在B列。
'写入开头第一个数据
Cells(2, ls) = Cells(2, "B")
'记录结尾数据需要写入的行数
s = 2
For i = 3 To hs
'判断下一行数据和上一行数据是否连续
If Cells(i, "B").Value - 1 <> Cells(i - 1, "B") Then
'如果不连续则在之号单元格写入上一行的数据
Cells(s, ls + 1) = Cells(i - 1, "B")
'同时写入下一连续数据的开始数
Cells(i, ls) = Cells(i, "B")
' 保存结尾数据的行数
s = i
End If
Next i
End Sub