Na to pytanie utworzyłem funkcję Google Apps Script, która oblicza skumulowaną sumę zakresu. Martin Hawksey w Google+ skomentował bardziej wydajny sposób obliczania skumulowanej sumy:
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;
}
Moje pytanie brzmi: czy można to osiągnąć za pomocą formuł?
google-sheets
google-apps-script
formulas
google-sheets-arrayformula
Jacob Jan Tuinstra
źródło
źródło
Odpowiedzi:
Tak:
=ArrayFormula(SUMIF(ROW(A1:A10);"<="&ROW(A1:A10);A1:A10))
Liczby w zielonym kółku to te, które są sumowane, ArrayFormula zapełnia wszystkie pozostałe na podstawie komórki, do której została wklejona, w tym przykładzie wkleiłem w A11, B1 i C1, aby pokazać jej efekt.
Ten arkusz kalkulacyjny, który zrobiłem jakiś czas temu, próbuje wyjaśnić, w jaki sposób MMULT może być użyty do tego rodzaju problemów, a także pokazuje rozwiązanie SUMIF na jednym z arkuszy, który może (i prawdopodobnie powinien) być używany w szczególnych przypadkach, takich jak ten w tym pytaniu.
źródło
Zakładając, że chcesz:
itp...
Następnie możesz użyć:
=sum($A$1:A1)
gdzieA1
jest początek liczb do zsumowania. Umieść tę formułęB1
(lub gdziekolwiek chcesz) i wypełnij ją, a zsumuje wszystkie komórki aż do wiersza, w którym jesteś. Alternatywnie możesz użyć=Ax+Bx-1
formatu (x = bieżący wiersz, dane w A, suma skumulowana w B) z sekcji „formuła B” powyżej.źródło
Chociaż przyjęta odpowiedź jest na miejscu, ma ona poważną wadę, ponieważ ostatni parametr
SUMIF
musi zawsze być „prawidłowym zakresem”, więc jeśli chodzi o bardziej zaawansowane obliczanie sumy bieżącej,MMULT
lepszym rozwiązaniem jest:źródło