Бывает, в таблицах требуется вывести нарастающий итог по какому-то столбцу значений. Понятное дело, что можно в каждую ячейку вставить формулу, считающую значение в каждой конкретной ячейке - но это не наш путь. Лично мне больше нравится когда на всю колонку указана одна формула, которая и считает значения во всех требуемых ячейках. Это и количество возможных ошибок со стороны пользователей уменьшает, и формулу проверить-скорректировать при необходимости сильно проще.
Я по шагам расскажу как это работает. Кто хочет сразу готовую формулу - можно прокрутить вниз.
Рассмотрим пример:
Есть некая колонка Результат и нам необходимо, чтоб в колонку Накопительный итог суммировались результаты начиная с самого первого, как это посчитано на картинке.
Решить эту задачу можно несколькими способами, как писал изначально, но мы здесь будем рассматривать вариант как это посчитать всего одной формулой.
Накопительный итог можно посчитать используя формулу SUM, где в качестве параметра передать массив ячеек, который требуется посчитать в каждой конкретной ячейке. А требуемый массив для каждой ячейки можно получить следующим образом:
=arrayformula("A2:A"&row(A2:A))
Чтоб передать вычисленный нами размер массива для каждой конкретной ячейки в функцию SUM мы используем ещё одну функцию - INDIRECT:
=sum(indirect(C2))
Или, чтоб убрать использование промежуточных ячеек, сразу так:
=sum(indirect("A2:A"&row(A2)))
И протащив это значение на требуемое количество строчек - получим посчитанное значение. Но это ещё не то, чего мы хотим. Нам надо посчитать все значения используя всего одну формулу.
Для того, чтоб достичь требуемого результата - мы будем использовать ещё одну функцию - BYROW и сделаем всё то же самое с её помощью. Для начала проверим, что получаем требуемые для вычислений массивы. В данном случае нам уже надо будет вводить всего одну фунцию всего в одну ячейку для расчёта всех требуемых значений:
=byrow(A2:A;lambda(a;"A2:A"&row(a)))
Убеждаемся, что всё корректно и переходим к следующему шагу. Добавляем вычисление суммы массива так-же всего одной формулой в одну ячейку:
=byrow(A2:A;lambda(a;sum(indirect("A2:A"&row(a)))))
Как видим - в общем и целом уже всё работает и считает. Осталось навести блеск и убрать вычисление в тех строках, где ещё не заполнено поле Результат. Для этого используем функции IF и ISBLANK. И да - это всего одна формула всего в одну ячейку B2:
=byrow(A2:A;lambda(a;if(isblank(a);;sum(indirect("A2:A"&row(a))))))
Как видим - всё замечательно работает и для вычисления Накопительного итога по всей колонке мы обошлись всего одной формулой в одной ячейке.
Таблица из примера тут.
Надеюсь, было интересно, понятно и полезно.