
(图1)
【第一种情况】如果B列不是用格式刷合并的数据(即:合并单元格区域只有最上方一个值)
可以在C2单元格中中输入如下公示:
=IF(B2<>"",1,C1+1)
然后填充下拉就可以了。如图2所示。


所以,这种情况就要另谋出路。
我是用VBA来处理的。
在代码窗口复制如下代码,点击运行就可以得到结果。
Sub 分段序号()
Dim i As Integer, j As Integer
i = 3
j = 3
Cells(2, 3) = 1
Do Until Cells(i, 2) = ""
If Cells(i, 2) <> Cells(i + 1, 2)And Cells(i, 2) <> Cells(i - 1, 2) Then
Cells(i, 3) = 1
Else
If Cells(i + 1, 2) <>Cells(i, 2) And Cells(i, 2) = Cells(i - 1, 2) Then
Cells(i, 3) = Cells(i - 1, 3) +1
Else
If Cells(i, 2) <>Cells(i - 1, 2) And Cells(i, 2) = Cells(i + 1, 2) Then
Cells(i, 3) = 1
Else
Cells(i, 3) = Cells(i - 1,3) + 1
End If
End If
End If
i = i + 1
Loop
End Sub
如图4所示。

【备注】代码中的J是我做测试用的。后面忘记删除了,各位海涵,我经常初心大意而且有点懒的,哈哈。
Tips1:不要看代码复杂,其实内部逻辑很简单,即判断(B列所在行)与前后行均不一致的行写为1,与前一行不一致且与后一行一致的行写为1,与前一行一致的行在上一行的基础上加数字1。
Tips2:
可能还有其他更简便的方法我没有注意到,如果有知道的话,麻烦告知下,因为我觉得用VBA这个办法还是有点繁琐(虽然内部逻辑结构简单)。
Tips3:
如果文章中有错误的地方,麻烦您多多指正。
Tips4:
万丈高楼平地起!




