如何在Google Sheets中按指定规则处理表格数据生成目标表?
在Google Sheets中实现指定数据分组处理的公式方案
原始数据
| COMPANY | ID | NUMBER | NAME | WORKING HOUR | WORKING PRICE | WORKING DAY | AUDIT PRICE | BONUS |
|---|---|---|---|---|---|---|---|---|
| ALASKA | 1 | 1232 | JOHN | 14,5 | 1102 | 23 | 1520 | 767 |
| NEWYORK | 1 | 1232 | JOHN | 1,5 | 114 | 7 | 375 | 0 |
| OHIO | 2 | 1414 | HARRY | 13,5 | 1020 | 25 | 1250 | 750 |
| ALASKA | 2 | 1414 | HARRY | 1,5 | 200 | 5 | 100 | 250 |
处理规则
- 按
NUMBER列分组 - 每组内选取
WORKING DAY数值更大的记录对应的COMPANY、ID、NAME - 对每组的
WORKING HOUR求和 - 对每组的
WORKING PRICE求和 - 对每组的
WORKING DAY求和 - 选取每组
AUDIT PRICE中的最大值 BONUS规则:若分组内存在0值则填0,否则对所有值求和
目标结果
| COMPANY | ID | NUMBER | NAME | WORKING HOUR | WORKING PRICE | WORKING DAY | AUDIT PRICE | BONUS |
|---|---|---|---|---|---|---|---|---|
| ALASKA | 1 | 1232 | JOHN | 16 | 1216 | 30 | 1520 | 0 |
| OHIO | 2 | 1414 | HARRY | 15 | 1220 | 30 | 1250 | 1000 |
公式实现
假设原始数据位于A2:I5区域(表头在A1:I1),在空白单元格(如K2)输入以下数组公式即可自动生成结果:
=LET( data, A2:I5, unique_nums, UNIQUE(INDEX(data,,3)), BYROW(unique_nums, LAMBDA(current_num, LET( group_data, FILTER(data, INDEX(data,,3)=current_num), max_day_pos, XMATCH(MAX(INDEX(group_data,,7)), INDEX(group_data,,7)), company, INDEX(group_data, max_day_pos, 1), id, INDEX(group_data, max_day_pos, 2), name, INDEX(group_data, max_day_pos, 4), total_hour, SUM(VALUE(SUBSTITUTE(INDEX(group_data,,5), ",", "."))), total_price, SUM(INDEX(group_data,,6)), total_day, SUM(INDEX(group_data,,7)), max_audit, MAX(INDEX(group_data,,8)), bonus, IF(COUNTIF(INDEX(group_data,,9), 0) > 0, 0, SUM(INDEX(group_data,,9))), HSTACK(company, id, current_num, name, total_hour, total_price, total_day, max_audit, bonus) ) )) )
公式说明
LET:定义变量简化公式结构,避免重复引用unique_nums:提取NUMBER列的唯一值作为分组依据BYROW:遍历每个唯一NUMBER,对对应分组执行计算:group_data:筛选当前NUMBER对应的所有行max_day_pos:定位分组内WORKING DAY最大值所在的行- 提取对应行的
COMPANY、ID、NAME total_hour:将WORKING HOUR的逗号分隔文本转为数值后求和- 对
WORKING PRICE、WORKING DAY直接求和 max_audit:取分组内AUDIT PRICE的最大值bonus:判断分组内是否有0值,有则返回0,否则求和HSTACK:将所有计算结果横向拼接成一行
内容的提问来源于stack exchange,提问作者Esat Kurtul
相关产品推荐
相关产品推荐

