【问题标题】:How to use an arrayformula to calculate balance on each line如何使用数组公式计算每行的余额
【发布时间】:2019-03-26 00:11:42
【问题描述】:

我有一个包含两列的 Google 表格。 F 列中有一个数值,我希望 G 列包含上一行中 G 列的值加上当前行中 F 列的值,基本上是一个运行总计。

我正在尝试使用数组公式进行计算,它适用于前几行,但之后 G 列包含与 F 列相同的值。

我使用的公式是:

=arrayformula(F3:F10+G2:G9)

我做错了什么?

【问题讨论】:

  • 您可以添加一个示例电子表格吗?
  • 你为什么不能在第 2 行或第 3 行或电子表格中的任何位置(你应该发布,至少是屏幕截图)中的绝对引用中锚定总和“来自”单元格?

标签: google-sheets array-formulas


【解决方案1】:

一般来说,任何东西都不应该使用自己的输出作为输入。需要进行迭代计算,只要有既定的替代方案,就必须避免这条充满陷阱的路径。在这种情况下,运行总计的常用方法是 MMULT 和一些装饰。

如果您的数据以 F2 开头,请将其放入 G2:

=ArrayFormula(IF(F2:F10,
  MMULT(
    TRANSPOSE((ROW(F2:F10)<=TRANSPOSE(ROW(F2:F10)))*F2:F10),
    SIGN(F2:F10)),
  IFERROR(1/0)
))

或者,稍微不透明,但能够处理负值:

=ArrayFormula(IF(F2:F10,
  MMULT(
    TRANSPOSE((ROW(F2:F10)<=TRANSPOSE(ROW(F2:F10)))*F2:F10),
    IF({F2:F10}<>0,1,0)),
  IFERROR(1/0)
))

【讨论】:

  • 同意。我也是这么想的,但人们似乎永远不会回来,所以我总是和其他未来的读者一起写作。我正在考虑采用通用方法,同时思考提问者的“……我正在尝试使用 ARRAYFORMULA……”是否是将简化的问题重新应用于更大、更糟糕的情况。干杯。
  • 我最初使用的是 SUM,但有问题的电子表格经常在 ti 中插入行,我厌倦了复制公式。据我了解,arrayformulas 会自动处理插入的行,只要它们落在指定的范围内。
  • 感谢 MMULT 提示,我不知道这一点。如果它对我有用,我会尝试并接受该解决方案。
  • 适合任何人的腰带的好工具,无论我们是否可以在这里最好地使用它。有关更多信息,我找到了一个不错的 Ben Collins writeup/video,它几乎完全按照我使用它的方式详细说明了它的用法。当需求不可避免地发生变化时,没有什么比维持别人难以理解的意大利面条公式更糟糕的了。谢谢你“回来”,哈。
【解决方案2】:

一个轻微的选择是:

=ARRAYFORMULA(IF(F2:F; 
 MMULT(TRANSPOSE((ROW(F2:F)<=TRANSPOSE(ROW(F2:F)))*F2:F); 
 SIGN(F2:F)^2); IFERROR(1/0)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多