将公式(具有连续的相对引用)更改为数组公式,以便将其与Google表单输入配合使用

时间:2018-11-23 12:17:05

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

如何将以下公式更改为数组公式,以便即使Google表单添加了新行也可以使用?

=if(SUMPRODUCT($D5:$D7) < 1,"Bad","Good")

背景: 列D包含TRUE或FALSE值。该公式只是向后看,如果连续有3个False,我需要输出为“ Bad”。如果我将其复制下来,效果很好。 但是,此工作表已链接到Google表单,并且Google为新回复添加了新行。

对于工作表的另一部分,我发现,如果我创建一个数组公式,那么即使Google插入新行(无需向下复制),数组公式也会生效。有效示例:=ArrayFormula(DAY($C2:C) = $A$1)。从$ C2一直一直到C列的其余部分,因此适用于Google表单插入的行。

如何让第一个公式像第二个公式一样工作,同时又回头看看最后三个相对值?

1 个答案:

答案 0 :(得分:0)

直接等效为

=ArrayFormula(if(A4:A="","",A4:A+A3:A+A2:A))

但这是行不通的-它总是需要在工作表的底部插入更多行。

=ArrayFormula(if(A4:A="","",A4:A+A3:A999+A2:A998))

有效,但仅适用于特定的纸张尺寸。

不过,您可以这样向前看:

ArrayFormula(if(A2:A="","",A2:A+A3:A+A4:A))

更复杂的解决方法是对行号进行vlookup,如下所示:

=ArrayFormula(if(row(A2:A)<4,"",if(A2:A="","",A2:A+vlookup(row(A2:A)-2,{row(A2:A),A2:A},2,false)+vlookup(row(A2:A)-1,{row(A2:A),A2:A},2,false))))

(您需要添加if语句以使其报告为“好”或“差”)

=ArrayFormula(if(row(A2:A)<4,"",if(A2:A="","",IF(A2:A+vlookup(row(A2:A)-2,{row(A2:A),A2:A},2,false)+vlookup(row(A2:A)-1,{row(A2:A),A2:A},2,false),"Good","Bad"))))