Google 表格:使用数组查询 WHERE 子句
GoogleSheet: Query with array for WHERE clause
我有这个公式可以正常工作:
query('SG_69.00 USD Reward'!$A:$AM,"
select
A,' ',D,W,O,P,Q,R,S,T,V,' ',' ',AK
where
AM ='US'
label ' ''', ' ''', ' '''
",0)
但是在那种情况下,对于 where 子句我只有一个条件。
我曾用做一长串的 OR 条件,如 AM='US' OR AM='NZ'
等等。全部与 AM 列进行比较。
我可以用上面提到的一长串 OR 条件来完成。但是我想要的是AM='named range'
(或只是一个范围)的各种或解决方案。
谢谢。
编辑
我在下面尝试了 Max 的解决方案。但是,我没想到要添加使我的情况进一步复杂化的内容。当我创建一个包含多个查询函数的数组时,如下所示:
={query('SG_39.00 USD Reward'!$A:$AM,"
select
A,' ',D,W,O,P,Q,R,S,T,V,' ',' ',AK
where
AM = '" & join("' or AM = '", ASIA) & "'
label ' ''', ' ''', ' '''
",0);query('SG_69.00 USD Reward'!$A:$AM,"
select
A,' ',D,W,O,P,Q,R,S,T,V,' ',' ',AK
where
AM = '" & join("' or AM = '", ASIA) & "'
label ' ''', ' ''', ' '''
",0);query('SG_179.00 USD Reward'!$A:$AM,"
select
A,' ',D,W,O,P,Q,R,S,T,V,' ',' ',AK
where
AM = '" & join("' or AM = '", ASIA) & "'
label ' ''', ' ''', ' '''
",0);query('SG_1_000.00 USD Reward'!$A:$AM,"
select
A,' ',D,W,O,P,Q,R,S,T,V,' ',' ',AK
where
AM = '" & join("' or AM = '", ASIA) & "'
label ' ''', ' ''', ' '''
",0);query('SG_Celery - Fulfillment.csv'!$A:$AV,"
select
B,' ',S,V,Y,AA,AB,AC,AD,AE,AF,' ',' ',AT
where
AV ='US'
label ' ''', ' ''', ' '''
",0)}
当我尝试调用它时出现值错误。
显然以这种方式组合它是行不通的。我不认为那是导致错误的原因。你能想出解决办法吗?
您可以在 join
函数的帮助下创建 or 条件:
=join("' or AM = '", named_range)
这里是示例查询文本公式:
="select A, B where A = '"&join("' or A = '",D1:D4) & "'"
备注
公式在join
前手动输入where A = '
,在& "'"
后手动输入收盘价& "'"
。
我有这个公式可以正常工作:
query('SG_69.00 USD Reward'!$A:$AM,"
select
A,' ',D,W,O,P,Q,R,S,T,V,' ',' ',AK
where
AM ='US'
label ' ''', ' ''', ' '''
",0)
但是在那种情况下,对于 where 子句我只有一个条件。
我曾用做一长串的 OR 条件,如 AM='US' OR AM='NZ'
等等。全部与 AM 列进行比较。
我可以用上面提到的一长串 OR 条件来完成。但是我想要的是AM='named range'
(或只是一个范围)的各种或解决方案。
谢谢。
编辑 我在下面尝试了 Max 的解决方案。但是,我没想到要添加使我的情况进一步复杂化的内容。当我创建一个包含多个查询函数的数组时,如下所示:
={query('SG_39.00 USD Reward'!$A:$AM,"
select
A,' ',D,W,O,P,Q,R,S,T,V,' ',' ',AK
where
AM = '" & join("' or AM = '", ASIA) & "'
label ' ''', ' ''', ' '''
",0);query('SG_69.00 USD Reward'!$A:$AM,"
select
A,' ',D,W,O,P,Q,R,S,T,V,' ',' ',AK
where
AM = '" & join("' or AM = '", ASIA) & "'
label ' ''', ' ''', ' '''
",0);query('SG_179.00 USD Reward'!$A:$AM,"
select
A,' ',D,W,O,P,Q,R,S,T,V,' ',' ',AK
where
AM = '" & join("' or AM = '", ASIA) & "'
label ' ''', ' ''', ' '''
",0);query('SG_1_000.00 USD Reward'!$A:$AM,"
select
A,' ',D,W,O,P,Q,R,S,T,V,' ',' ',AK
where
AM = '" & join("' or AM = '", ASIA) & "'
label ' ''', ' ''', ' '''
",0);query('SG_Celery - Fulfillment.csv'!$A:$AV,"
select
B,' ',S,V,Y,AA,AB,AC,AD,AE,AF,' ',' ',AT
where
AV ='US'
label ' ''', ' ''', ' '''
",0)}
当我尝试调用它时出现值错误。
显然以这种方式组合它是行不通的。我不认为那是导致错误的原因。你能想出解决办法吗?
您可以在 join
函数的帮助下创建 or 条件:
=join("' or AM = '", named_range)
这里是示例查询文本公式:
="select A, B where A = '"&join("' or A = '",D1:D4) & "'"
备注
公式在join
前手动输入where A = '
,在& "'"
后手动输入收盘价& "'"
。