如何在查询 where 子句中使用 ARRAYFORMULA?
How to use ARRAYFORMULA in query where clause?
在我的 table 的单元格 C1:C
中,我有 6 行带有票证 ID。我喜欢搜索不同的电子表格来搜索那些工单 ID 并计算在该工单上花费的总小时数。
我使用以下公式让它工作:
=QUERY({IMPORTRANGE("SPREADSHEETID";"B3:B")\ARRAYFORMULA(TO_PURE_NUMBER(IMPORTRANGE("SPREADSHEETID";"F3:F")-IMPORTRANGE("SPREADSHEETID";"E3:E")))};"SELECT SUM(Col2) WHERE Col1 = '"&C1&"' GROUP BY Col1 LABEL SUM(Col2) ''")
在此示例中,C1 是可以找到工单 ID 的位置。
现在我认为我可以将 QUERY
包装在 ARRAYFORMULA
中并使用 C1:C
而不是 C1
但这行不通。现在我可以将上面的公式复制并粘贴到每个单元格中,但必须有更简洁的方法。
回答
我使用了以下公式使其工作,感谢下面的 Max 回答。
=QUERY(
{
IMPORTRANGE("SPREADSHEETID";"B3:B")\
ARRAYFORMULA(
TO_PURE_NUMBER(
IMPORTRANGE("SPREADSHEETID";"F3:F") - IMPORTRANGE("SPREADSHEETID";"E3:E")
)
)
};
"
SELECT Col1, SUM(Col2)
WHERE Col1 = '" & JOIN("' OR Col1 = '";FILTER(C:C; C:C <> "")) & "'
GROUP BY Col1
LABEL SUM(Col2) ''
")
不,不能创建一组查询字符串并一次性使用 arrayformula(query(...))
到 运行 它们。
备选方案:而不是
SELECT SUM(Col2) WHERE Col1 = '"&C1&"' GROUP BY Col1 LABEL SUM(Col2) ''
使用查询
SELECT Col1, SUM(Col2) GROUP BY Col1
在 sheet 的其他地方,然后使用 vlookup
查找所需的 Col1 的每个值的总和。 vlookup
可以像这样在 arrayformula
内部使用:
=arrayformula(vlookup(C1:C10, E:F, 2, 0))
在 E 列(需要精确匹配)中查找 C1..C10 中的每个值,并 returns 在 F 列(搜索范围的第 2 列)中查找相应的值。
示例公式为:
=QUERY({A:B},"select * where Col1 = '"&JOIN("' or Col1 = '",FILTER(D2:D,D2:D<>""))&"'")
在我的 table 的单元格 C1:C
中,我有 6 行带有票证 ID。我喜欢搜索不同的电子表格来搜索那些工单 ID 并计算在该工单上花费的总小时数。
我使用以下公式让它工作:
=QUERY({IMPORTRANGE("SPREADSHEETID";"B3:B")\ARRAYFORMULA(TO_PURE_NUMBER(IMPORTRANGE("SPREADSHEETID";"F3:F")-IMPORTRANGE("SPREADSHEETID";"E3:E")))};"SELECT SUM(Col2) WHERE Col1 = '"&C1&"' GROUP BY Col1 LABEL SUM(Col2) ''")
在此示例中,C1 是可以找到工单 ID 的位置。
现在我认为我可以将 QUERY
包装在 ARRAYFORMULA
中并使用 C1:C
而不是 C1
但这行不通。现在我可以将上面的公式复制并粘贴到每个单元格中,但必须有更简洁的方法。
回答
我使用了以下公式使其工作,感谢下面的 Max 回答。
=QUERY(
{
IMPORTRANGE("SPREADSHEETID";"B3:B")\
ARRAYFORMULA(
TO_PURE_NUMBER(
IMPORTRANGE("SPREADSHEETID";"F3:F") - IMPORTRANGE("SPREADSHEETID";"E3:E")
)
)
};
"
SELECT Col1, SUM(Col2)
WHERE Col1 = '" & JOIN("' OR Col1 = '";FILTER(C:C; C:C <> "")) & "'
GROUP BY Col1
LABEL SUM(Col2) ''
")
不,不能创建一组查询字符串并一次性使用 arrayformula(query(...))
到 运行 它们。
备选方案:而不是
SELECT SUM(Col2) WHERE Col1 = '"&C1&"' GROUP BY Col1 LABEL SUM(Col2) ''
使用查询
SELECT Col1, SUM(Col2) GROUP BY Col1
在 sheet 的其他地方,然后使用 vlookup
查找所需的 Col1 的每个值的总和。 vlookup
可以像这样在 arrayformula
内部使用:
=arrayformula(vlookup(C1:C10, E:F, 2, 0))
在 E 列(需要精确匹配)中查找 C1..C10 中的每个值,并 returns 在 F 列(搜索范围的第 2 列)中查找相应的值。
示例公式为:
=QUERY({A:B},"select * where Col1 = '"&JOIN("' or Col1 = '",FILTER(D2:D,D2:D<>""))&"'")