Para esta pergunta, criei uma função Script do Google Apps, que calcula a soma cumulativa de um intervalo. Martin Hawksey no Google+ fez um comentário sobre uma maneira mais eficiente de calcular a soma cumulativa:
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;
}
Minha pergunta é: isso pode ser alcançado com o uso de fórmulas?
google-sheets
google-apps-script
formulas
google-sheets-arrayformula
Jacob Jan Tuinstra
fonte
fonte
Respostas:
Sim:
=ArrayFormula(SUMIF(ROW(A1:A10);"<="&ROW(A1:A10);A1:A10))
Os números no círculo verde são os que estão sendo somados; a ArrayFormula está preenchendo todos os outros com base na célula em que foi colada; neste exemplo, colei em A11, B1 e C1 para mostrar seu efeito.
Esta planilha que fiz há um tempo atrás tenta explicar como o MMULT pode ser usado para esse tipo de problema, e também demonstra a solução SUMIF em uma das planilhas, que pode (e provavelmente deveria) ser usada para casos especiais como o nesta pergunta.
fonte
Supondo que você queira:
etc ...
Então você pode usar:
=sum($A$1:A1)
ondeA1
é o início dos números para somar. Coloque essa fórmulaB1
(ou onde você quiser) e preencha-a, e ela somará todas as células até a linha em que você está incluindo . Como alternativa, você pode usar o formato=Ax+Bx-1
(x = linha atual, dados em A, soma acumulada em B) na seção "Fórmula de B" acima.fonte
Embora a resposta aceita esteja no local, ela apresenta uma grande desvantagem, pois o último parâmetro de
SUMIF
precisa sempre ser um "intervalo válido"; portanto, quando se trata de um cálculo total em execução mais avançado,MMULT
é a melhor opção:fonte