Google Sheets Query函数:按列非空切换多列选择需求
Google Sheets 动态列选择解决方案
你之前的写法错误在于,QUERY函数的查询参数只能是单个完整的查询语句,不能用AND/OR直接拼接两个独立的SELECT语句,这不符合Google Sheets QUERY的语法规则。
下面提供两种可行的解决方法:
方法一:合并两个QUERY结果
通过纵向拼接两个QUERY的结果,分别筛选L列非空和L列空的行,对应选择不同列:
=IFERROR({QUERY('Form Responses 1'!A2:AC,"Select A,B,D,L,M,N,O,P Where L is not null"); QUERY('Form Responses 1'!A2:AC,"Select A,B,D,Y,Z,AA,AB,AC Where L is null")})
{...; ...}用于纵向合并两个查询结果,确保两种情况的列数一致(都是8列)IFERROR用来处理其中一个QUERY返回空结果时的报错问题
方法二:逐行判断动态取列
用ARRAYFORMULA结合IF逐行检查L列状态,直接返回对应列的内容(会保留所有行,包括L和Y都为空的行,若需要过滤可额外添加FILTER):
=ARRAYFORMULA(IF('Form Responses 1'!L2:L<>"", {'Form Responses 1'!A2:A, 'Form Responses 1'!B2:B, 'Form Responses 1'!D2:D, 'Form Responses 1'!L2:L, 'Form Responses 1'!M2:M, 'Form Responses 1'!N2:N, 'Form Responses 1'!O2:O, 'Form Responses 1'!P2:P}, {'Form Responses 1'!A2:A, 'Form Responses 1'!B2:B, 'Form Responses 1'!D2:D, 'Form Responses 1'!Y2:Y, 'Form Responses 1'!Z2:Z, 'Form Responses 1'!AA2:AA, 'Form Responses 1'!AB2:AB, 'Form Responses 1'!AC2:AC}))
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

