Google Sheets Query:合并两查询或为透视结果添加总计列
解决方案
不用合并两个QUERY的话,可以通过匹配关联的方式把两个查询的结果整合到一起,直接用VLOOKUP结合ARRAYFORMULA就能实现,具体公式如下:
=ARRAYFORMULA( LET( q1, QUERY(IMPORTRANGE("source","'Sheet'!A:D"),"select Col1, sum(Col2), sum(Col4) group by Col1"), q2, QUERY(IMPORTRANGE("source","'Foglio24'!A:D"),"select Col1, sum(Col4) group by Col1 pivot Col3"), IFERROR(VLOOKUP(q1!A:A, q2, SEQUENCE(1, COLUMNS(q2)-1, 2), FALSE), 0) ) )
公式说明
- 用
LET定义两个变量q1和q2,分别存储你原来的两个QUERY结果,让公式结构更清晰 VLOOKUP以q1的第一列(分组后的Col1)为匹配键,从q2中提取对应行的透视小计列SEQUENCE(1, COLUMNS(q2)-1, 2)会自动生成q2中从第2列开始的所有列索引,不管透视后生成多少列都能适配IFERROR(..., 0)用来处理无匹配项的情况,显示0而非错误值
如果偏好INDEX+MATCH的组合,也可以用这个版本:
=ARRAYFORMULA( LET( q1, QUERY(IMPORTRANGE("source","'Sheet'!A:D"),"select Col1, sum(Col2), sum(Col4) group by Col1"), q2, QUERY(IMPORTRANGE("source","'Foglio24'!A:D"),"select Col1, sum(Col4) group by Col1 pivot Col3"), match_rows, MATCH(q1!A:A, q2!A:A, 0), IFERROR(INDEX(q2!B:ZZ, match_rows, SEQUENCE(1, COLUMNS(q2)-1)), 0) ) )
注意事项
- 首次使用
IMPORTRANGE需要授权访问数据源,否则会弹出权限请求提示 - 如果透视后的列数特别多,把公式里的
q2!B:ZZ改成更大的列范围即可
内容的提问来源于stack exchange,提问作者Luca Tang
相关产品推荐
相关产品推荐

