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

Excel如何为单列重复出现的同值内容逐次标注出现序号

解决方案

Excel函数方案

全版本通用公式

假设你的数据首行是表头,水果数据从A2单元格开始,在B2单元格输入以下公式,下拉填充到所有数据行即可:
=COUNTIF($A$2:A2,A2)
公式逻辑:混合引用锁定统计起始行,下拉时统计范围自动扩展为「从A2到当前行的A列区域」,统计当前行A列水果值的出现次数,即为顺序编号。
如果需要结合C列的唯一水果列表做校验,避免A列出现不在清单内的水果,可使用以下公式:
=IF(ISNA(VLOOKUP(A2,C:C,1,FALSE)),"不在水果清单内",COUNTIF($A$2:A2,A2))

365/2021及以上版本动态数组公式

无需手动下拉,输入后自动溢出所有行的结果,将公式中的A2:A100替换为你实际的A列数据范围即可:
=BYROW(A2:A100,LAMBDA(x,COUNTIF(A2:x,x)))

VBA宏方案

如果需要批量处理大量数据,或者要和其他自动化流程结合,可使用以下宏代码:

Sub 标注水果出现顺序()
    Dim lastRow As Long, i As Long, fruit As String
    Dim countDict As Object
    ' 创建字典存储每个水果的累计出现次数
    Set countDict = CreateObject("Scripting.Dictionary")
    ' 获取A列最后一行有数据的行号
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row
    
    ' 遍历所有数据行,假设第1行为表头,从第2行开始
    For i = 2 To lastRow
        fruit = Cells(i, "A").Value
        If countDict.exists(fruit) Then
            countDict(fruit) = countDict(fruit) + 1
        Else
            countDict(fruit) = 1
        End If
        ' 写入顺序号到B列
        Cells(i, "B").Value = countDict(fruit)
    Next i
    
    Set countDict = Nothing
End Sub

使用方法:按Alt+F11打开VBA编辑器,右键点击当前工作簿名称选择「插入」-「模块」,粘贴上述代码后按F5运行即可。如果你的表头不是第1行,调整代码中For i = 2 To lastRow的起始数值即可。

内容的提问来源于stack exchange,提问作者Shinaj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:45:00