ARRAYFORMULA 在扩展时不会增加单元格

ARRAYFORMULA does not increase cell as it expands

我正在尝试获取一个 ARRAYFORMULA 来从前一个单元格中减去当前单元格, 但看来如果我写

=ARRAYFORMULA((A3:A)-(A2))

公式在扩展时不会增加一个单元格。

这是我得到的示例

https://docs.google.com/spreadsheets/d/1ci4kiNCgjBZK0Ue218IRIk5t8tSmElF5EgbIxb1_Q9w/edit?usp=sharing

很明显它一直在引用A2(但我没有在公式中使用$A$2)

如果我不使用 ARRAYFORMULA,我会简单地使用 =SUM(A3-A2)

谁能给我一个解决方案?

情侣评论

你应该 accept 因为他投入了更多的工作并帮助你更清楚地提出你的问题。但是,如果您想要行下方的任何值,这些公式可以提供更大的灵活性(现在我认为基于动态数组向下流动没有多大意义,但从概念上讲,也许有人会发现它有用) .

简单公式 要求您的范围下方有一个单元格为空:

=iferror(filter(filter(N(A2:A),A2:A<>"")-N(A1:A),A1:A<>""),"")

复杂公式 将允许直接在下面的值(我再次承认这似乎是荒谬的,考虑到这是一个向下行的动态扩展...)

=Filter(filter(filter(N(A2:A),A2:A<>"")-N(A1:A),A1:A<>""),ISNUMBER(filter(filter(N(A2:A),A2:A<>"")-N(A1:A),A1:A<>"")))

我在你的页面上做了一个演示。

您的示例电子表格仍然是“仅查看”;所以我和其他任何人都不能直接离开我们的解决方案。但是,将以下公式放在 D1 中:

=ArrayFormula({"Difference"; IF(A2:A="",,IFERROR(A2:A-OFFSET(A2:A,-1,0)))})

这将创建 header(您可以根据需要在公式中更改)和所有结果。

(调整到您的实际电子表格中的位置,如您的 post 中所示,这将是 =ArrayFormula({"Difference";IF(L7:L="",,IFERROR(L7:L-OFFSET(L7:L,-1,0)))})。)