如何按另一工作表排序规则重新排列Google Sheets查询结果?
解决QUERY汇总结果按指定工作表顺序排列的问题
问题描述
我使用以下QUERY公式汇总两个工作表的数据:
=QUERY({'1st'!A7:D;'2nd'!A7:D}, "SELECT Col1, SUM(Col2), SUM(Col3), SUM(Col4) GROUP BY Col1")
计算结果符合预期,但需要让汇总结果按照'Master Chart'工作表中分类项的排序规则排列。直接用ORDER BY结合GROUP BY无法实现自定义顺序,求保留查询结果并按指定顺序排列的方法。
解决方案
方法1:用SORTBY+MATCH实现自定义排序
通过SORTBY函数结合MATCH,将QUERY的结果按照'Master Chart'中的位置排序,公式如下:
=LET( queryResult, QUERY({'1st'!A7:D;'2nd'!A7:D}, "SELECT Col1, SUM(Col2), SUM(Col3), SUM(Col4) GROUP BY Col1"), SORTBY(queryResult, MATCH(INDEX(queryResult,,1), 'Master Chart'!A:A, 0)) )
LET函数存储QUERY结果,避免重复计算,提升效率MATCH函数返回每个汇总项在'Master Chart'!A列中的位置序号SORTBY根据该序号对QUERY结果排序,完全匹配'Master Chart'的顺序
方法2:用VLOOKUP映射到指定顺序列表
如果需要直接在'Master Chart'工作表生成对应汇总数据,可在该表B2单元格输入以下公式,再向右、向下填充:
=IFERROR(VLOOKUP(A2, QUERY({'1st'!A7:D;'2nd'!A7:D}, "SELECT Col1, SUM(Col2), SUM(Col3), SUM(Col4) GROUP BY Col1"), 2, FALSE), 0)
- 公式中
2对应汇总结果的第2列(SUM(Col2)),C列填充时改为3,D列改为4 IFERROR处理'Master Chart'中存在但无汇总数据的项,默认显示为0(可按需调整)
内容的提问来源于stack exchange,提问作者ThunderMax
相关产品推荐
相关产品推荐

