如何在Google Sheets中用ARRAYFORMULA自动生成BAND连续分组列?
Google Sheets 动态生成BAND列方案
直接在E2单元格输入以下公式,即可自动生成符合要求的BAND列:
=ARRAYFORMULA( IF(A2:A="",, BYROW( A2:A&"|"&ROW(A2:A), LAMBDA(x, LET( cust, LEFT(x, FIND("|", x)-1), current_row_num, VALUE(RIGHT(x, LEN(x)-FIND("|", x))), row_range, ROW(A$2:A$current_row_num), cust_range, A$2:A$current_row_num, amt_range, C$2:C$current_row_num, start_flags, --( (row_range=2) + (row_range>2)*(cust_range<>INDEX(cust_range, row_range-1)) + (row_range>2)*(amt_range<>INDEX(amt_range, row_range-1)) * (cust_range=INDEX(cust_range, row_range-1)) ), SUM(FILTER(start_flags, cust_range=cust)) ) ) ) ) )
公式逻辑说明
- 标记分组起始行:通过判断每一行是否满足以下任一条件,标记为分组起始行(值为1):
- 表格的第二行(数据起始行)
- 当前行客户与表格上一行客户不同
- 当前行客户与表格上一行相同,但金额不同
- 计算分组编号:对每个客户,累计从数据起始行到当前行的所有起始行标记数量,这个累计值就是当前行的BAND分组号。
这样就能实现:同一客户下连续相同金额的行归为同一分组;金额相同但不连续(中间隔了不同客户或不同金额的行)则属于不同分组;每个客户的分组独立递增,不受其他客户行的干扰。
内容的提问来源于stack exchange,提问作者tamla83
相关产品推荐
相关产品推荐

