其实我真的不明白你为什么不简单地写信给“E2”单元格:
D2-D1(假设您的值在 D 列中),然后将公式向下拖动,直到您有值。(我知道您将在 D 列中有越来越多的值,但您可以添加一个 if 条件来检查该特定 D 单元格是否为空,如果不是,则计算前一行的减法。)
也许这不是你要找的(那么对不起,我误解了这个问题),但无论如何我会这样做。
希望它有所帮助。
更新:
在了解了真正的问题之后,我会使用这个功能:
=arrayformula(if(isblank(A3:A100),"",filter(A3:A100,A3:A100>-1)-filter(A2:A99,A2:A99>-1)))
假设您的数据在 A 列中(并且 A 列中没有任何值小于 0!),将其写入单元格 B3,它将产生 diff-s。
说明:查看函数的最后一部分 - ...filter(A3:A100,A3:A100>-1)-filter(A2:A99,A2:A99>-1) - 这只是两个查询返回两个相等大小的列表。第一个来自 A3-A100,第二个来自 A2-A99。两个列表中的元素必须相等,这一点很重要。(在这种情况下,两个列表中都有 98 个元素)。并且两个列表之间有一个减法 (-) 符号,因此如果我们将 ARRAYFORMULA 放在这两个列表之前,它将对列表中的每个“对”进行减法。列表的第一个元素是“A3”和“A2”,因此 A3-A2 将是 B3 的值。列表的第二个元素是“A4”和“A3”,因此 A4-A3 将转到 B4,依此类推。所以基本上我们完成了:
=arrayformula(过滤器(A3:A100,A3:A100>-1)-过滤器(A2:A99,A2:A99>-1))
主要部分已经完成,尽管额外的 IF 用于如果当前 A 字段为空白,则我们写入一个空字符串 (""),否则我们计算减法,如上所述。
所以再次完整的功能:
=arrayformula(if(isblank(A3:A100),"",filter(A3:A100,A3:A100>-1)-filter(A2:A99,A2:A99>-1)))
正如我之前所说,此函数假定 A 列中只有非负数。如果不是这种情况,只需将过滤条件 (-1) 重写为一个非常小的负数。(如“-99999999”)
希望能帮助到你。