Excel:同SKU递增计数、不同SKU重置为1的公式实现问题
解决Excel连续SKU计数递增、切换重置的问题
核心问题分析
你用的COUNTIF公式会统计历史所有匹配前缀的单元格,哪怕中间换了SKU,所以无法实现切换后重置计数的需求。正确的逻辑应该是仅判断当前行与上一行的SKU是否一致,一致则计数+1,否则重置为1。
步骤1:确定SKU基准提取规则
根据你的示例(HGAF147、HGAF147 S.jpg),先提取每个单元格的核心SKU:
- 若SKU是第一个空格前的内容(无空格则取整单元格),用这个提取逻辑:
IFERROR(LEFT(A2, FIND(" ", A2)-1), A2) - 若沿用你原公式的斜杠逻辑(提取到第一个斜杠前的内容),用这个:
LEFT(A2, FIND("/", A2)-1)
步骤2:实现连续计数的公式
适用于Excel 365/2021+(一键生成所有结果)
假设数据范围是A2:A100,在B2输入公式后回车自动填充所有行:
=SCAN(1, A2:A100, LAMBDA(prev, curr, IF( IFERROR(LEFT(curr,FIND(" ",curr)-1),curr) = IFERROR(LEFT(OFFSET(curr,-1,0),FIND(" ",OFFSET(curr,-1,0))-1),OFFSET(curr,-1,0)), prev+1, 1 ) ))
替换A2:A100为你的实际数据范围,若用斜杠提取逻辑,替换公式中对应的提取部分即可。
适用于旧版Excel(下拉填充)
- 在B2单元格输入
1(首行计数初始值) - 在B3单元格输入公式,下拉到所有数据行:
=IF( IFERROR(LEFT(A3,FIND(" ",A3)-1),A3) = IFERROR(LEFT(A2,FIND(" ",A2)-1),A2), B2+1, 1 )
同样,需要用斜杠逻辑的话,替换对应的提取代码即可。
效果验证
比如你的数据是:
| A列内容 | B列计数 |
|---|---|
| HGAF147 | 1 |
| HGAF147 S.jpg | 2 |
| HGAF147 X.png | 3 |
| ABC987 | 1 |
| ABC987 copy.jpg | 2 |
用上述公式就能得到完全符合需求的计数结果。
内容的提问来源于stack exchange,提问作者HelloWorld
相关产品推荐
相关产品推荐

