@Qwixo

Для Google таблиц есть формула с Arrayformula. Как она работает?

Добрый день!

На сервисе stackoverflow.com задал вопрос о том, как решить свою задачу. Мне ответили и дали формулу, она работает. Но я не могу понять, почему она работает :) Поясните, пожалуйста.

Задача следующая:
В столбце A указаны различные числа. В столбце B нужно с помощью arrayformula вывести сумму всех предыдущих строк столбца A. Но нужно сделать это обязательно с помощью arrayformula, чтобы не растягивать вниз по необходимости обычную формулу. Вот так:
5a02e0d8aa881611856579.jpeg

Через стандартные формулы это делается просто:
B1: = A1
B2: = A2 + $B$1
B3: = A3 + $B$2
B4: = A4 + $B$3
и тянем вниз.

Рабочая формула с stackoverflow.com выглядит вот так:
=ARRAYFORMULA(СУММЕСЛИ(СТРОКА(A1:A10); "<="&СТРОКА(A1:A10); A1:A10))

Опишите, пожалуйста, принцип ее работы. Я знаком с ARRAYFORMULA, СУММЕСЛИ, СТРОКА и "&", но я не понимаю как в данном случае работает эта связка. Возможно, я не совсем правильно понимаю принцип работы ARRAYFORMULA.
  • Вопрос задан
  • 5538 просмотров
Пригласить эксперта
Ответы на вопрос 3
developer
@developer
ARRAYFORMULA последовательно работает с каждой строкой диапазона.
В каждой строке она делает то, что написано, а написано посчитать сумму предыдущих, на выходе ты имеешь финальную сумму.
Ответ написан
Комментировать
@Fi3xeR
Абсолютно непонятное объяснение. Если СУММЕСЛИ в связке с ARRAYFORMULA ведет себя точно так же, как и без нее, почему же тогда при построчной записи этой же самой формулы в виде =СУММЕСЛИ(СТРОКА(A1); "<="&СТРОКА(A1); A1:A10), =СУММЕСЛИ(СТРОКА(A2); "<="&СТРОКА(A2); A1:A10), =СУММЕСЛИ(СТРОКА(A3); "<="&СТРОКА(A3); A1:A10) и т.д., результат совершенно неадекватный???
Совершенно непонятно, за счет чего "написано посчитать сумму предыдущих"? Где это написано? Я вижу только "меньше либо равно", а не "посчитать сумму предыдущих". И если заменить "меньше либо равно" на, например, "больше либо равно", формула тоже что-то считает, но вообще совершенно непонятно что.
В данной ситуации "СУММЕСЛИ" ведет себя совершенно иначе, и я тоже не пойму как.
Ответ написан
Комментировать
ProgrammerForever
@ProgrammerForever Куратор тега Google Sheets
Учитель, автоэлектрик, программист, музыкант

=СУММЕСЛИ(СТРОКА(A1); "<="&СТРОКА(A1); A1:A10)
=СУММЕСЛИ(СТРОКА(A2); "<="&СТРОКА(A2); A1:A10)
=СУММЕСЛИ(СТРОКА(A3); "<="&СТРОКА(A3); A1:A10)

и т.д., результат совершенно неадекватный???

Тут скорее всего разворачивается так:
=СУММЕСЛИ(СТРОКА(A1); "<="&СТРОКА(A1:A10); A1:A10) => сумма всех {A1:A10} в строках которых {1} меньшие или равны {СТРОКА(A1:A10)}
=СУММЕСЛИ(СТРОКА(A2); "<="&СТРОКА(A1:A10); A1:A10) => сумма всех {A1:A10} в строках которых {2} меньшие или равны {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
=СУММЕСЛИ(СТРОКА(A3); "<="&СТРОКА(A1:A10); A1:A10) => сумма всех {10, 20, 30, 40 ...} в строках которых {3} меньшие или равны {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы