Google Sheet序列号生成问题:按唯一名称设置起始编号
Google Sheet 按名称分组生成序列号解决方案
需求分析
你需要生成的序列号包含三部分:
- 名称前两位前缀
- 日期的年月部分
- 按唯一名称+年月分组的递增序号(同一名称同一年月内从1开始计数)
现有公式仅生成了前两部分,缺少分组递增的序号逻辑,这是核心问题。
修正后的公式
在目标列(比如F列)输入以下数组公式:
=ARRAYFORMULA( IF( E2:E="",, LEFT(E2:E,2) & YEAR(D2:D) & "-" & TEXT(MONTH(D2:D),"0") & "-" & COUNTIFS( E2:E, E2:E, YEAR(D2:D), YEAR(D2:D), MONTH(D2:D), MONTH(D2:D), ROW(D2:D), "<="&ROW(D2:D) ) ) )
公式说明
- 前缀部分:
LEFT(E2:E,2)提取名称前两位,保留你原有的逻辑 - 年月部分:
YEAR(D2:D) & "-" & TEXT(MONTH(D2:D),"0")生成年份+月份(如2024-5),若需要月份两位格式(如2024-05),将"0"改为"00"即可 - 分组递增序号:
COUNTIFS同时匹配三个条件:- 同一名称(E列值相同)
- 同一年份(D列年份相同)
- 同一月份(D列月份相同)
- 当前行及之前的行(
ROW(D2:D), "<="&ROW(D2:D)),实现每组内从1开始递增计数
注意事项
- 确保D列是日期格式,否则
YEAR()和MONTH()函数无法正常提取年月 - 若需要序号带固定位数(如001、002),可将
COUNTIFS(...)部分改为TEXT(COUNTIFS(...), "000"),根据需求调整位数
内容的提问来源于stack exchange,提问作者Ferdinand palaspas II
相关产品推荐
相关产品推荐

