Google Sheets是否有函数支持多数据集按不同条件QUERY查询合并?
Google Sheets多数据集带条件合并查询方案
存在可实现该需求的方案,核心是通过Google Sheets的数组堆叠语法搭配多个独立QUERY函数实现,只要保证每个QUERY返回的列数、列顺序一致,即可将不同查询条件的结果合并到同一个区域。
原有写法错误说明
- 第一种写法:使用逗号
,拼接两个QUERY结果,逗号为横向左右拼接符号,若要实现上下堆叠合并数据,需使用分号;;此外第二个QUERY未关闭表头输出,会导致合并后出现重复表头。 - 第二种写法:两个QUERY函数直接拼接无合法连接符,语法完全不成立,无法执行。
同文档内多表查询正确写法
适配你原有业务逻辑的修改后代码如下:
={ QUERY(INVENTORY!$A:$Z,"SELECT Col1, Col2, Col3, Col4, Col5, Col15, Col17, Col18, Col7, Col11, Col12, Col13, Col14 WHERE Col15 IS NOT NULL and Col15 < "&F1&" and Col19 <> 'Printed' AND Col20 = 'Restock' ORDER BY Col15 ASC LIMIT 200",1); QUERY(PREINVENTORY!$A:$O,"SELECT Col1, Col2, Col3, Col4, Col6, Col7, Col8, Col9, Col10, Col11, Col12, Col13, Col14 WHERE Col15 = 'X'",0) }
跨文档IMPORTRANGE查询正确写法
首先单独运行一次任意IMPORTRANGE函数,点击弹窗的「允许访问」完成权限授权,再使用如下公式:
={ QUERY(IMPORTRANGE("替换为你的表格实际URL", "INVENTORY!$A:$Z"),"SELECT Col1, Col2, Col3, Col4, Col5, Col15, Col17, Col18, Col7, Col11, Col12, Col13, Col14 WHERE Col15 IS NOT NULL and Col15 < "&F1&" and Col19 <> 'Printed' AND Col20 = 'Restock' ORDER BY Col15 ASC LIMIT 200",1); QUERY(IMPORTRANGE("替换为你的表格实际URL", "PREINVENTORY!$A3:$P2000"),"SELECT Col1, Col2, Col3, Col4, Col5, Col7, Col8, Col9, Col10, Col11, Col12, Col13, Col14 WHERE Col16 = 'X'",0) }
注意事项
- 所有QUERY的SELECT字段数量、字段顺序、对应列的数据类型必须完全一致,否则会出现数据错位或报错
- 如需合并更多数据集,只需在数组内用分号追加符合要求的QUERY语句即可
- 若合并结果存在多余空行,可在外层嵌套QUERY过滤:
=QUERY({*上述完整数组公式*},"WHERE Col1 IS NOT NULL",1)
内容的提问来源于stack exchange,提问作者natew
相关产品推荐
相关产品推荐

