如果col2
符合标准,使用查询选择col3 = criteria
,如果col3
或选择col4
。
我尝试了多个OR语句,尝试添加第二个查询,似乎没有什么对我有用:
= Query(importrange(B7 ,"Sheet1!A1:G700"),"select Col2 Where Col3 = '"&Y116&"'", 0),
Query(importrange(B7 ,"Sheet1!A1:G700"),"select Col3 Where Col4 = '"&Y116&"'", 0)
如果标准在col3
中不匹配,我想要col2
的结果。
Google Visualization API查询语言不允许加入,因此您必须执行多个查询。但非查询公式有时不是一种选择 - 它们不提供查询的灵活性和强大功能。
我把你的需求看作: 我需要这个,如果那个,[包含]或另一个,如果那个,但全部按顺序。 广义的解决方法可能类似于: 列出第一个选择的所有匹配项,以及用于排序的键列 附加第二个选择的所有匹配项,以及用于排序的键列 通过排序键对组合列表进行排序 仅输出数据列
作为公式,使用每个WHERE命中的行作为排序键:
=ARRAY_CONSTRAIN(
SORT({
QUERY({sourceRange,ARRAYFORMULA(ROW(sourceRange))},
"select Col2, Col5 where Col3 = 'that' ",0);
QUERY({sourceRange,ARRAYFORMULA(ROW(sourceRange))},
"select Col3, Col5 where Col4 like 'that other' ",0)
},2,TRUE)
,99999,1)
在将其应用于您的配方时,尝试将其吹清以便清晰:
=ARRAY_CONSTRAIN(
SORT({
QUERY({
importrange(B7,"Sheet1!A1:G700"),
ARRAYFORMULA(ROW(1:700)))
},
"select Col2, Col5 where Col3 = '"&Y116&"'",0
);
QUERY({
importrange(B7,"Sheet1!A1:G700"),
ARRAYFORMULA(ROW(1:700)))
},
"select Col3, Col5 where Col4 = '"&Y116&"'",0
);
},2,TRUE)
,700,1)
最初构造一个形式的数组:
Col2 entry where Col3 matched, row number
Col2 entry where Col3 matched, row number
Col2 entry where Col3 matched, row number
…
Col3 entry where Col4 matched, row number
Col3 entry where Col4 matched, row number
Col3 entry where Col4 matched, row number
…
然后可以按行号,升序排序:SORT(
... ,2,TRUE)
最后剪切键并打印700行,1列数据:ARRAY_CONSTRAIN(
... ,700,1)
您可以使用IF
执行此操作:
=ARRAYFORMULA(IF(index(importrange(B7 ,"Sheet1!A1:G700"),0,3)=Y116,
index(importrange(B7 ,"Sheet1!A1:G700"),0,2),
index(importrange(B7 ,"Sheet1!A1:G700"),0,3)
))