Google Sheets技术需求:为各Section分组末尾添加对应汇总行
解决Google Sheets分组后添加汇总行的问题
直接用以下公式即可实现需求,无需手动操作:
=LET( raw_data, UNIQUE(QUERY(Input!A:L, "SELECT L, F WHERE L IS NOT NULL AND F IS NOT NULL ORDER BY L", 0)), sections, UNIQUE(INDEX(raw_data,,1)), REDUCE( {}, sections, LAMBDA(acc, sec, LET( cats, FILTER(INDEX(raw_data,,2), INDEX(raw_data,,1)=sec), group, HSTACK(REPT(sec, COUNTA(cats)), cats), summary_row, HSTACK(sec, sec), VSTACK(acc, group, summary_row) ) ) ) )
公式说明
- raw_data:从Input表提取非空的Section(L列)和Category(F列)唯一组合,并按Section排序,确保同组数据集中排列。
- sections:提取所有不重复的Section值,作为分组遍历的依据。
- REDUCE遍历处理:
- 对每个Section,过滤出对应的所有唯一Category;
- 构造该Section的常规数据行,Section列重复对应次数,Category列匹配对应分类;
- 构造汇总行,将当前Section值填入Category列(若需要汇总行的Section列为空,把
HSTACK(sec, sec)改成HSTACK("", sec)即可); - 把历史结果、当前分组数据、汇总行垂直拼接,最终输出完整的分组+汇总结构。
如果要避免可能出现的空行,可在公式末尾嵌套FILTER函数过滤:
=FILTER( 上面的完整公式, INDEX(,,1)<>"" OR INDEX(,,2)<>"" )
内容的提问来源于stack exchange,提问作者geocoder
相关产品推荐
相关产品推荐

