如何在QUERY函数中用GROUP BY子句对多列姓名单元格分组求和?
解决方法
你可以通过构造「姓名-数值」对应数组后再分组求和的方式实现需求,具体公式如下:
=QUERY( { FLATTEN(Data!A2:D), FLATTEN(IF(Data!A2:D<>"", Data!E2:E, )) }, "SELECT Col1, SUM(Col2) WHERE Col1 IS NOT NULL GROUP BY Col1 ORDER BY SUM(Col2) DESC LABEL Col1 '姓名', SUM(Col2) '数值总和'" )
公式说明:
FLATTEN(Data!A2:D):将4列姓名数据扁平化为单列,所有非空姓名依次排列FLATTEN(IF(Data!A2:D<>"", Data!E2:E, )):为每个姓名匹配对应行的数值——仅当姓名单元格非空时,提取该行的数值,空姓名位置留空,最终扁平化后与姓名列一一对应- 外层
QUERY函数:- 筛选出非空的姓名条目
- 按姓名分组,对对应数值求和
- 按数值总和降序排序
- 自定义表头为「姓名」和「数值总和」
执行后会直接生成你需要的结果:
| 姓名 | 数值总和 |
|---|---|
| Becky | 8 |
| Andy | 7 |
| Dorothy | 6 |
| Edith | 5 |
| Carl | 5 |
内容的提问来源于stack exchange,提问作者Herr Jemine
相关产品推荐
相关产品推荐

