使用ARRAYFORMULA实现按产品自动递增序号,产品变更时重置为1
按产品ID生成重置式序列号的解决方案
可行公式(直接生成ID-序号格式)
在目标列首行(如B2)输入以下公式,即可自动为所有行生成符合要求的序列号:
=ARRAYFORMULA(IF(A2:A="", "", A2:A & "-" & COUNTIFS(A2:A, A2:A, ROW(A2:A), "<="&ROW(A2:A))))
公式逻辑拆解
IF(A2:A="", "", ...):过滤A列空单元格,避免生成无效内容COUNTIFS(A2:A, A2:A, ROW(A2:A), "<="&ROW(A2:A)):核心逻辑——针对每行的产品ID,统计当前行及以上所有行中相同ID的出现次数,这个次数就是该ID对应的自增序列号(换ID时自动重置为1)A2:A & "-" & ...:将产品ID与序列号拼接成「ID-序号」的格式(如101-1、102-2)
单独生成序列号的替代公式
如果只需要序列号数字(不拼接产品ID),使用这个公式:
=ARRAYFORMULA(IF(A2:A="", "", COUNTIFS(A2:A, A2:A, ROW(A2:A), "<="&ROW(A2:A))))
原公式失效原因
你之前使用的=ARRAYFORMULA(IF(A2:A="", "",IF(A2:A=A1:A, ROW(A2:A) - ROW(A2) + 1,1)))存在两个问题:
- ARRAYFORMULA中
A2:A=A1:A的数组对比会因行错位导致连续相同ID的计数逻辑错误 - 用ROW差值计数无法针对不同产品ID单独重置计数器
内容的提问来源于stack exchange,提问作者ytk
相关产品推荐
相关产品推荐

