Как использовать формулу массива для расчета баланса в каждой строке - PullRequest
2 голосов
/ 26 марта 2019

У меня есть лист Google, который состоит из двух столбцов.Столбец F содержит числовое значение, и я хочу, чтобы столбец G содержал значение столбца G в предыдущей строке плюс значение столбца F в текущей строке, в основном промежуточный итог.

Я пытаюсьиспользовать формулу массива для вычисления, и она работает для первой пары строк, но после этого столбец G содержит то же значение, что и столбец F.

Формула, которую я использую:

=arrayformula(F3:F10+G2:G9)

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 26 марта 2019

В общем, ничто не должно использовать свой собственный вывод в качестве ввода. Потребуются итеративные вычисления, и этот путь следует избегать, когда есть альтернатива. В этом случае обычный подход к промежуточному итогу - это 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)
))
0 голосов
/ 29 марта 2019

небольшая альтернатива будет:

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

0

...