如何扩展QUERY函数实现多列分组求和(含F:G、I:J列)
解决方案
直接用数组拼接+单层QUERY就能实现需求,无需嵌套两层QUERY,公式如下:
=QUERY({FILTER(A:B,A:A<>"");FILTER(F:G,F:F<>"");FILTER(I:J,I:I<>"")},"SELECT Col1, SUM(Col2) GROUP BY Col1 HAVING SUM(Col2) > 0")
公式逻辑说明:
FILTER(A:B,A:A<>""):提取A:B区域中A列(名称)非空的有效行,同理处理F:G、I:J区域,避免空行干扰分组计算{...;...;...}:把三个过滤后的区域纵向拼接成一个统一的二维数组,让所有名称和对应数值归到同一组列中- 外层
QUERY:按拼接后的第一列(名称)分组,对第二列(数值)求和,同时用HAVING SUM(Col2) > 0直接过滤掉求和结果≤0的分组,一步完成原公式的过滤需求
验证示例:
以CD为例,它在B列的数值是200、G列是300,拼接后的数组会包含所有CD对应的行,求和后得到500,完全符合需求。
如果你的数据里名称列不会出现空值,也可以简化掉FILTER,直接用:
=QUERY({A:B;F:G;I:J},"SELECT Col1, SUM(Col2) WHERE Col1 <> '' GROUP BY Col1 HAVING SUM(Col2) > 0")
内容的提问来源于stack exchange,提问作者cpaone
相关产品推荐
相关产品推荐

