求助:用VBA实现连续重复0单元格组的递增计数
需求描述
我有一列从0到360的数值,示例如下:
54 54 53 53 53 ... ... 2 2 2 1 1 1 0 0 0 0 0 1 1 2 2 2 .... ... 359 359 0 0 0希望将每组连续的0视为1次,找到下一组连续的0时计数递增为2,以此类推。需要编写VBA代码实现,核心是仅对连续行重复的0组进行单次计数的算法。
VBA代码实现
Sub CountZeroGroups() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim zeroGroupNum As Integer Dim isInZeroGroup As Boolean ' 指定数据所在工作表,根据实际修改表名 Set ws = ThisWorkbook.Worksheets("Sheet1") ' 获取数据列最后一行行号(假设数据在A列) lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row zeroGroupNum = 0 isInZeroGroup = False ' 遍历所有数据行 For i = 1 To lastRow If ws.Cells(i, "A").Value = 0 Then ' 首次进入连续0组时,组编号递增 If Not isInZeroGroup Then zeroGroupNum = zeroGroupNum + 1 isInZeroGroup = True End If ' 在B列写入当前0组的编号,可按需修改列位 ws.Cells(i, "B").Value = zeroGroupNum Else ' 离开连续0组,重置标记 isInZeroGroup = False End If Next i ' 在C1单元格输出总组数 ws.Cells(1, "C").Value = "连续0总组数:" & zeroGroupNum MsgBox "计数完成,连续0总组数为:" & zeroGroupNum End Sub
代码逻辑说明
- 变量初始化:
zeroGroupNum记录当前0组的编号,isInZeroGroup标记是否处于连续0的组内 - 遍历判断:
- 当遇到0且未在0组时,递增组编号并标记进入组,同时给当前行的对应列写入组号
- 遇到非0值时,标记退出0组,确保下一组0被重新计数
- 结果输出:完成遍历后,在指定单元格显示总组数,并弹出提示框告知结果
内容的提问来源于stack exchange,提问作者Alan Wong
相关产品推荐
相关产品推荐

