EXECL 获取断续数据的开头和结尾的数据(宏)

该博客介绍了一个VBA宏,用于检查Excel B列中的数值是否连续,并在相邻不连续数据间记录起始和结束数值。脚本首先获取工作表的实际数据范围,然后在右侧新增两列写入‘起号’和‘之号’。通过对B列数据进行遍历,判断连续性并在适当位置填充结果,避免覆盖原有数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:判断序号行的数据是否连续,在开头字段写入序号行中连续数据的第一个数,结尾字段写入连续数据的最后一个数。 请见下图:

 宏:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值