Скользящая сумма с формулой массива в Google Sheets - PullRequest
1 голос
/ 27 апреля 2020

У меня есть набор данных ниже. Col1 - данные, а Col2 - скользящая сумма предыдущих 5 строк Col1 (включительно).

Date      Col1  Col2
01/04/20  2     2
02/04/20  1     3 
03/04/20  4     7
04/04/20        7
05/04/20        7
06/04/20  5     10
07/04/20  2     11
08/04/20        7
09/04/20        7
10/04/20  1     8
11/04/20        3
12/04/20        1
13/04/20        1
14/04/20        1
15/04/20  1     1

Есть ли способ использовать массив формул для этого вместо ввода формулы суммы в каждую ячейку в Col2 понижается?

У меня был аналогичный вопрос с использованием счетчика, и мне было дано следующее решение:

=ArrayFormula(filter(countifs(B2:B,">0",row(B2:B),"<="&row(B2:B),row(B2:B),">"&row(B2:B)-5),A2:A<>""))

Могу ли я изменить это для работы на сумму?

Ответы [ 3 ]

2 голосов
/ 27 апреля 2020

Вы можете выполнить sh с помощью пользовательской функции , созданной в скрипте Google Apps. Для этого выполните следующие действия:

  • В вашей электронной таблице выберите Инструменты> Редактор скриптов , чтобы открыть скрипт, связанный с вашим файлом.
  • Скопируйте эту функцию в редакторе сценариев и сохраните проект:
function SUMROWS(input, number) {
  var output = [];
  var sum;
  for (var row = 0; row < input.length; row++) {
    sum = 0;
    for (var i = number - 1; i >= 0; i--) {
      if (row - i >= 0) {
        sum = sum + Number(input[row - i]);
      }
    }
    output.push(sum);
  }
  return output;
}
  • Теперь, если вы go вернетесь к своей электронной таблице, вы можете использовать эту функцию так же, как и любую другую функция. Вам просто нужно указать соответствующий диапазон (в данном случае это будет B2:B16) и количество сумм предыдущих строк (в данном случае 5) в качестве параметров, как вы можете видеть здесь:

enter image description here

Ссылка:

2 голосов
/ 27 апреля 2020

Вы также можете сделать это путем разницы двух скользящих сумм, если вы будете sh:

=ArrayFormula(filter(sumif(row(B2:B),"<="&row(B2:B),B2:B)-sumif(row(B2:B),"<="&row(B2:B)-5,B2:B),A2:A<>""))

enter image description here

0 голосов
/ 27 апреля 2020

попробуй:

=ARRAYFORMULA(SUMIF(ROW(B2:B), "<="&ROW(B2:B), B2:B))
...