如何在查询where子句中使用ARRAYFORMULA?

时间:2017-08-09 20:17:20

标签: google-sheets array-formulas

在我桌子的单元格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,但这不会奏效。现在我可以在每个单元格中复制并粘贴上面的公式,但必须有一个更清洁的方式。

ANSWER

我使用以下公式使其有效,感谢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) ''
")

2 个答案:

答案 0 :(得分:1)

不,无法创建查询字符串数组并使用arrayformula(query(...))一次运行它们。

替代方案:而不是

SELECT SUM(Col2) WHERE Col1 = '"&C1&"' GROUP BY Col1 LABEL SUM(Col2) ''

使用查询

SELECT Col1, SUM(Col2) GROUP BY Col1

表单上的其他位置,然后使用vlookup查找所需Col1的每个值的总和。 vlookup可以在arrayformula内部使用,如下所示:

=arrayformula(vlookup(C1:C10, E:F, 2, 0))

在E列(需要完全匹配)中查找C1..C10中的每个值,并返回F列中的相应值(搜索范围的第2列)。

答案 1 :(得分:1)

示例公式为:

=QUERY({A:B},"select * where Col1 = '"&JOIN("' or Col1 = '",FILTER(D2:D,D2:D<>""))&"'")

enter image description here