|
还是不太容易理解的,主要必须看明白b变量的用法。
- Sub aaa()
- Dim i&, n&, m&, b As Boolean
- Columns(1).Insert '最左边插入1列
- For i = 2 To [b65536].End(3).Row 从第2行循环遍历至最后一行
- If Cells(i, 2) = Cells(2, 2) And b = True Then 'Cells(2, 2)为初始值,找到等于初始值的单元格时,判断b开关变量状态,b=false时,属于连续相同行,反之说明又从头开始了
- m = m + 1 'm变量加1,m变量的值为回到初始值的次数,用来判断是加“X”还是“Y”,序号是1递增还是4递增
- If m = 2 Then n = 4 Else n = 1 '根据m变量的值来判断序号初值是4还是1
- b = False '判断从头开始后,将b变量恢复初始值,以便下次再用
- Else '判断没有从头开始时,仅根据m变量的值对序号进行1或4的递增
- If m = 2 Then n = n + 4 Else n = n + 1
- End If
- If Cells(i, 2) <> Cells(i + 1, 2) Then b = True 'b变量的使用比较关键,也不容易说清楚,这里是在上下单元格值不同时,改变b开关,说明连续相同行结束了,下次再找到跟初始值一样的单元格时,就证明又从头开始了
- Cells(i, 1) = n '将n变量(序号)填入A列
- If m = 1 Then Cells(i, 3) = "X" Else If m = 2 Then Cells(i, 3) = "Y" '根据m的值来改变C列值X或Y,m等于0时说明第一次循环还没结束,不用改变
- Next i
- End Sub
复制代码 |
|