Google Sheets结合Sort/Filter/IFS公式 分组排序分配唯一ID
Google Sheets 按基准行排序分组自动分配唯一ID方案
将以下公式直接粘贴到B2单元格即可,全列ID会自动生成,无需提前手动录入ID内容、无需手动下拉填充:
=MAP(ROW(A2:A),LAMBDA(r, IF(r>COUNTA(A:A),"", LET( base_rows, FILTER(ROW(A2:A), MOD(ROW(A2:A)-2,4)=0), sorted_bases, SORT({{base_rows}, INDEX(A:A,base_rows)}),2,1), current_base, XLOOKUP(r, base_rows, base_rows, r-MOD(r-2,4)), base_rank, MATCH(current_base, INDEX(sorted_bases,,1),0), "ID-"&TEXT(base_rank,"000") )) ))
实现逻辑说明
- 基准行自动识别:自动筛选行号满足
MOD(行号-2,4)=0的行作为分组基准,即行号2、6、10、14、18、22……每隔4行选取的基准行,新增符合间隔规则的行会被自动纳入计算 - 排序规则:提取所有基准行A列(Sort Key列)的值做升序排序,按照排序结果给每个基准组分配连续的唯一ID,不存在提前录入ID再排序的问题
- 分组绑定:每个基准行和其后续连续3行自动绑定为同一分组,4行共用同一个唯一ID,完全符合分组要求
- 空值适配:A列无数据的行B列自动返回空值,不会出现报错
自定义调整说明
如需修改ID格式,直接调整公式最后一行的拼接规则即可:
- 需要纯数字ID:将最后一行替换为
base_rank- 需要修改ID前缀:替换
"ID-"部分的文本即可- 需要调整ID序号的位数:修改
TEXT(base_rank,"000")里的0的数量,比如要4位序号就写"0000"
内容的提问来源于stack exchange,提问作者user19088578
相关产品推荐
相关产品推荐

