使用Excel VBA按城市分组块为每行添加序列编号求助
VBA实现同城市分组行内递增编号方案
以下代码适配你给出的表结构:默认数据存放在当前活动工作表,A列为城市列,第一行为表头,新增的编号列放在E列,你可根据实际表结构调整代码内的列号参数。
使用步骤
- 打开目标Excel文件,按下
Alt + F11唤出VBA编辑器 - 点击顶部菜单栏「插入」→「模块」,将下方代码粘贴到弹出的模块编辑窗口中
- 按下
F5运行代码即可自动完成分组编号填充
完整VBA代码
Sub AddGroupSerialNumber() Dim lastRow As Long Dim i As Long Dim currentCity As String Dim prevCity As String Dim serialNum As Integer ' 读取当前工作表A列最后一行有数据的行号 lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row ' 写入编号列表头 Range("E1").Value = "Number" ' 初始化首行数据的编号参数 prevCity = Range("A2").Value serialNum = 1 Range("E2").Value = serialNum ' 从第三行开始遍历所有数据行 For i = 3 To lastRow currentCity = Range("A" & i).Value ' 和上一行城市相同则序号递增,不同则重置序号为1 If currentCity = prevCity Then serialNum = serialNum + 1 Else serialNum = 1 prevCity = currentCity End If ' 将序号写入对应行的E列 Range("E" & i).Value = serialNum Next i ' 自动适配E列列宽,可根据需要删除此行 Columns("E").AutoFit End Sub
注意事项
- 若你的城市列不是A列,可将代码中所有
"A"替换为实际城市对应的列号,比如城市在B列就替换为"B" - 若你需要将编号放在其他列,可将代码中所有
"E"替换为目标列号,比如要放在F列就替换为"F" - 若你的表没有表头,第一行就是数据,可删除表头写入代码,将遍历起始行改为2即可
内容的提问来源于stack exchange,提问作者PrettyClose
相关产品推荐
相关产品推荐

