如何在Google Sheets中按指定列分组查询并汇总唯一值
Google Sheets 分组求和问题解决方案
针对你需要按第一列唯一值分组,关联第二列(user)并对其余列求和的需求,修正后的QUERY公式如下:
=SORT(QUERY(A17:K21, "SELECT A, B, SUM(C), SUM(D), SUM(E), SUM(F), SUM(G), SUM(H), SUM(I), SUM(J), SUM(K) GROUP BY A, B", 1), 1, TRUE, 2, FALSE)
原公式问题分析:
- 指定的范围
C17:K21遗漏了作为分组依据的前两列(A、B),导致QUERY无法识别分组字段 - 错误地对分组字段A列使用
SUM(A),分组字段应直接在SELECT中指定,无需聚合 - GROUP BY子句必须包含所有SELECT中的非聚合字段(即A和B列),否则会触发语法错误
公式说明:
QUERY(A17:K21, ...):指定完整的数据范围,包含前两列分组依据和后续要求和的列SELECT A, B, SUM(C)...SUM(K):选择分组字段A、B,同时对C到K列分别求和GROUP BY A, B:按A列唯一值+对应B列(user)分组SORT(..., 1, TRUE, 2, FALSE):按A列升序、B列降序排序结果(可根据需求调整排序参数)
如果需要适配动态变化的列数,可以使用ARRAYFORMULA生成SUM字段列表,示例如下:
=SORT(QUERY(A17:K21, "SELECT A, B,"&JOIN(",",ARRAYFORMULA("SUM("&CHAR(66+SEQUENCE(COLUMNS(C17:K21)))&")"))&" GROUP BY A, B", 1), 1, TRUE, 2, FALSE)
内容的提问来源于stack exchange,提问作者ihesusNavarro
相关产品推荐
相关产品推荐

