公式通过向下拖动鼠标起作用,但不适用于ArrayFormula

时间:2019-07-29 13:47:20

标签: regex google-sheets google-sheets-formula array-formulas google-sheets-query

我有一个问题,就是我根本无法理解问题所在。我正在尝试比较两个电子表格数据,以基于它们生成一些结果。

此刻,我有一个用作查询的表单:

Question 1 | Question 2 | Question 3
(dropdown) | (dropdown) | (dropdown)
(dropdown) | (dropdown) | (dropdown)
(dropdown) | (dropdown) | (dropdown)
(dropdown) | (dropdown) | (dropdown)

PS:每列上的这四个下拉菜单具有相同的值-想法是为每个问题创建一个“多选”下拉菜单。

然后我有另一个电子表格(这是我的“数据库”),如下所示:

Is valid? -=- | Data I Need | Answer 1 | Answer 2 | Answer 3
TRUE / FALSE  | Data needed | Multiple answers separated by a comma

还有第三个电子表格,称为“结果”,该电子表格应仅显示匹配的问题/答案。

一切工作正常,除了我必须在所有列中向下拖动公式以在数据库电子表格上重复该公式。如果我尝试在第一行添加ArrayFunction,则不会重复该公式。

在数据库电子表格中,我在“是否有效?”中使用此公式。列(这是我通过拖动鼠标重复整个列的内容):

=IF(AND(SUM(
IF(OR(ISNUMBER(MATCH("All",NamedRangeQuestion1)),SUMPRODUCT(ARRAYFORMULA(ISNUMBER(MATCH(TRANSPOSE(TRIM(SPLIT(Database!C2,","))),NamedRangeQuestion1,0))))),TRUE,FALSE),
IF(OR(ISNUMBER(MATCH("All",NamedRangeQuestion2)),SUMPRODUCT(ARRAYFORMULA(ISNUMBER(MATCH(TRANSPOSE(TRIM(SPLIT(Database!D3,","))),NamedRangeQuestion3,0))))),TRUE,FALSE), IF(OR(ISNUMBER(MATCH("All",NamedRangeQuestion2)),SUMPRODUCT(ARRAYFORMULA(ISNUMBER(MATCH(TRANSPOSE(TRIM(SPLIT(Database!E3,","))),NamedRangeQuestion3,0))))),TRUE,FALSE)
) = COUNTIF(queryRowTotal,"Filtering"),COUNTIF(queryRowTotal,"Filtering") > 0),
TRUE,FALSE
)

它工作正常,但是问题是我必须将公式拖到整个列中。如果我尝试在此上使用ArrayFormula,那就行不通了。

在“结果”电子表格中,我有:

=IFERROR(query(tableDatabase,"select B WHERE A = TRUE",-1),"")

我需要在结果电子表格中收集匹配的结果。一切正常,但就我而言,必须拖下鼠标而不是自动重复公式是很麻烦的事情。

Here我有一个电子表格的工作示例。

我在这里做什么错了?

更好的解决方案是直接在结果电子表格上创建查询,而不必在“数据库”电子表格上编写该代码,但是我无法想到使用过滤器和/或查询功能的解决方案。

1 个答案:

答案 0 :(得分:1)

=ARRAYFORMULA(IF(LEN(B2:B), IF(
 REGEXMATCH(C2:C, TEXTJOIN("|", 1, Query!A3:A6))*
 REGEXMATCH(D2:D, TEXTJOIN("|", 1, Query!B3:B6))*
 REGEXMATCH(E2:E, TEXTJOIN("|", 1, Query!C3:C6))=1, TRUE), ))

enter image description here