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
相关产品推荐
相关产品推荐

