Para esta pregunta, he creado una función de Google Apps Script, que calcula la suma acumulativa de un rango. Martin Hawksey en Google+ hizo un comentario sobre una forma más eficiente de calcular la suma acumulativa:
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;
}
Mi pregunta es: ¿ se puede lograr esto con el uso de fórmulas?
google-sheets
google-apps-script
formulas
google-sheets-arrayformula
Jacob Jan Tuinstra
fuente
fuente
Respuestas:
Sí:
=ArrayFormula(SUMIF(ROW(A1:A10);"<="&ROW(A1:A10);A1:A10))
Los números en el círculo verde son los sumados, ArrayFormula está poblando todos los demás en función de la celda en la que se pegó, en este ejemplo pegué en A11, B1 y C1 para mostrar su efecto.
Esta hoja de cálculo que hice hace un tiempo intenta explicar cómo MMULT se puede usar para este tipo de problemas, y también muestra la solución SUMIF en una de las hojas, que puede (y probablemente debería) usarse para casos especiales como el en esta pregunta
fuente
Asumiendo que quieres:
etc ...
Luego puede usar: ¿
=sum($A$1:A1)
dóndeA1
está el comienzo de los números para sumar? Ponga esa fórmulaB1
(o donde quiera) y llénela, y sumará todas las celdas hasta la fila en la que se encuentra. Alternativamente, puede usar el=Ax+Bx-1
formato (x = fila actual, datos en A, suma acumulativa en B) de la sección "Fórmula de B" anterior.fuente
Si bien la respuesta aceptada está en el lugar, tiene una gran desventaja debido al hecho de que el último parámetro
SUMIF
debe ser siempre un "rango válido", por lo que cuando se trata de un cálculo total más avanzadoMMULT
es la mejor opción:fuente