You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:27:04