Для этого вопроса я создал функцию скрипта Google Apps, которая вычисляет совокупную сумму диапазона. Мартин Хокси в Google+ сделал комментарий о более эффективном способе расчета накопленной суммы:
function cumulativeSum(array){
var output = [];
for (i in array){
if(i==0) {
if (array[i].length > 1) throw ("Only single column of data");
output.push([array[i][0]]);
} else {
output.push([output[i-1][0] + array[i][0]]);
}
}
return output;
}
Мой вопрос: это можно сделать с помощью формул?
google-sheets
google-apps-script
formulas
google-sheets-arrayformula
Джейкоб Ян Туинстра
источник
источник
Ответы:
Да:
=ArrayFormula(SUMIF(ROW(A1:A10);"<="&ROW(A1:A10);A1:A10))
Числа в зеленом круге являются суммируемыми, ArrayFormula заполняет все остальные на основе ячейки, в которую была вставлена, в этом примере я вставил в A11, B1 и C1, чтобы показать его эффект.
В этой электронной таблице, которую я сделал некоторое время назад, делается попытка объяснить, как MMULT может использоваться для решения подобных проблем, а также демонстрируется решение SUMIF на одном из листов, которое можно (и, вероятно, следует) использовать в особых случаях, таких как в этом вопросе.
источник
Предполагая, что вы хотите:
так далее...
Затем вы можете использовать:
=sum($A$1:A1)
гдеA1
начало чисел для суммирования. Вставьте эту формулуB1
(или где угодно) и заполните ее, и она будет суммировать все ячейки , включая строку, в которой вы находитесь. Кроме того, вы можете использовать=Ax+Bx-1
формат (x = текущая строка, данные в A, накопленная сумма в B) из раздела «Формула B» выше.источник
Хотя принятый ответ находится на месте, он имеет существенный недостаток из-за того, что последним параметром
SUMIF
всегда должен быть «допустимый диапазон», поэтому, когда речь идет о более продвинутом расчете промежуточного итогового значения,MMULT
лучшим вариантом является:источник