如果有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
的结果。
答案 0 :(得分:1)
Google Visualization API查询语言不允许联接,因此您必须执行多个查询。但是非查询公式有时不是一个选择,它们不能提供查询的灵活性和强大功能。
我将您的需求读为:
如果那个,我需要这个,如果那个其他,我需要这个[另一个] ,但是都按顺序。< br />
通用的解决方法可能类似于:
列出所有首次选择的匹配项,以及用于排序的键列
将所有匹配项附加到第二个选择项上,再加上用于排序的键列
通过排序键对组合列表进行排序
仅输出数据列
作为公式,使用每个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)
答案 1 :(得分:0)
您可以使用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)
))