Google Sheets:按A列分类重启递增B列非空单元格序号
解决方案
针对你需要按分类重置递增序号的需求,可以使用以下公式实现:
=ARRAYFORMULA(IF(B2:B="",,COUNTIFS(A$2:A,A2:A,B$2:B,"<>",ROW(A$2:A),"<="&ROW(A2:A))))
公式说明
IF(B2:B="",, ...):当B列为空时返回空值,仅对非空单元格执行计数逻辑COUNTIFS(A$2:A,A2:A, ...):限定统计范围为当前行所属的A列分类B$2:B,"<>":只统计B列非空的单元格ROW(A$2:A),"<="&ROW(A2:A):仅统计当前行及之前的行,实现同分类内的递增计数
需求回顾
你之前找到的公式仅能实现B列非空时全局连续递增:
=ARRAYFORMULA(IFERROR(MATCH($B$2:$B&ROW($B$2:$B),FILTER($B$2:$B&ROW($B$2:$B),$B$2:$B<>""),0)))
但实际需要的是A列分类变更时,B列非空单元格的序号从1重新开始,示例期望结果如下:
| 行号 | 分类列(A) | 现有公式结果(C) | 其他结果(D) | 期望结果 |
|---|---|---|---|---|
| 2 | A | 1 | 1 | 1 |
| 3 | A | |||
| 4 | A | |||
| 5 | A | 1 | 2 | 2 |
| 6 | A | |||
| 7 | A | |||
| 8 | A | |||
| 9 | A | 1 | 3 | 3 |
| 10 | A | |||
| 11 | B | 1 | 4 | 1 |
| 12 | B | 1 | ||
| 13 | B | |||
| 14 | C | 1 | 5 | 2 |
| 15 | C | 2 | ||
| 16 | C | |||
| 17 | C | 1 | 6 | 3 |
| 18 | C | |||
| 19 | D | 1 | 7 | 1 |
| 20 | D | |||
| 21 | D | |||
| 22 | D | 1 | 8 | 2 |
| 23 | D | |||
| 24 | D | 1 | 9 | 3 |
| 25 | D | |||
| 26 | D | |||
| 27 | D | 1 | 10 | 4 |
| 28 | D | |||
| 29 | D |
内容的提问来源于stack exchange,提问作者Lod
相关产品推荐
相关产品推荐

