将公式(具有连续的相对引用)更改为数组公式,以便它可以与 google 表单输入一起使用

Changing formula (with consecutive relative references) into an array formula so it will work with google forms input

如何将以下公式更改为数组公式,以便在 google 表单添加新行时它仍然有效?

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

背景: D 列包含 TRUE 或 FALSE 值。公式简单回顾一下,如果连续有3个False,我需要输出为"Bad"。如果我把它复制下来,这很好用。 但是,此 sheet 链接到 google 表单并且 google 为新回复添加了新行。

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

如何使第一个公式像第二个公式一样工作,同时仍然回顾最后三个相对值?

嗯,直接等价的是

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

但这不起作用 - 它总是需要在 sheet.

的底部插入更多行
=ArrayFormula(if(A4:A="","",A4:A+A3:A999+A2:A998))

确实有效,但仅适用于特定的 sheet 尺寸。

虽然你可以这样展望未来:

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 语句使其报告 "Good" 或 "Bad")

=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"))))