Kumulative Summe ohne Schrift


35

Für diese Frage habe ich eine Google Apps Script-Funktion erstellt, die die kumulative Summe eines Bereichs berechnet. Martin Hawksey auf Google+ hat einen Kommentar zu einer effizienteren Methode zur Berechnung der kumulierten Summe abgegeben:

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;
}

Meine Frage ist: Kann dies mit der Verwendung von Formeln erreicht werden?


Entschuldigung für eine sehr späte Antwort, ich habe gerade gesehen, dass er rechts "Related" eingab.
AdamL

Antworten:


30

Ja:

=ArrayFormula(SUMIF(ROW(A1:A10);"<="&ROW(A1:A10);A1:A10))

Beispiel für die kumulative Summe

Die Zahlen im grünen Kreis werden summiert. Die ArrayFormula füllt alle anderen Zahlen basierend auf der Zelle, in die sie eingefügt wurde. In diesem Beispiel habe ich A11, B1 und C1 eingefügt, um den Effekt zu veranschaulichen.

Diese Kalkulationstabelle , die ich vor einiger Zeit erstellt habe, versucht zu erklären, wie MMULT für diese Art von Problemen verwendet werden kann, und sie demonstriert auch die SUMIF-Lösung auf einem der Blätter, die für spezielle Fälle wie diesen verwendet werden kann (und wahrscheinlich sollte) in dieser Frage.


Ich habe diese Formel einmal (ich glaube, es war deine) im Google-Forum verwendet: SUMIF (ROW (A: A); "<" & ROW (A: A)), das hat nicht funktioniert. Dieser tut es.
Jacob Jan Tuinstra

Das Bild in der Antwort wurde von einem anderen Mitglied bearbeitet: + Xavier Casto
AdamL

1
@Fogest, ich habe ein Produkt namens "Snagit" verwendet. Weitere Informationen
Xavier Casto

@XavierCasto Oh, ich habe das vor LONG Zeit benutzt, konnte mich nicht daran erinnern, dass ich das hatte, obwohl es schon lange her ist. Vielen Dank für die Antwort, ich mag Produkte von TechSmith.
ComputerLocus

31

Vorausgesetzt, Sie möchten:

  Row | A | B | B's formula
  --------------------------------
   1  | 1 | 1 | =1     (or =A1)
   2  | 2 | 3 | =1+2   (or =A2+B1)
   3  | 3 | 6 | =1+2+3 (or =A3+B2)

etc...

Dann können Sie verwenden: =sum($A$1:A1)Wo A1ist der Anfang der zu summierenden Zahlen? Fügen Sie diese Formel ein B1(oder wo immer Sie möchten) und füllen Sie sie aus. Alle Zellen werden bis einschließlich der Zeile, in der Sie sich befinden, summiert . Alternativ können Sie das =Ax+Bx-1Format (x = aktuelle Zeile, Daten in A, kumulative Summe in B) aus dem obigen Abschnitt "Formel von B" verwenden.


7
Dies scheint zu funktionieren und ist viel einfacher als die akzeptierte Antwort
K Raphael

1
einverstanden, das ist einfacher und es funktioniert nahtlos!
loretoparisi

1

Die akzeptierte Antwort ist zwar vor Ort, hat aber einen großen Nachteil, da der letzte Parameter SUMIFimmer ein "gültiger Bereich" sein muss. Wenn es also um eine weiter fortgeschrittene Berechnung MMULTder laufenden Gesamtsumme geht, ist dies die bessere Option:

=ARRAYFORMULA(IF(LEN(A1:A), 
 MMULT(TRANSPOSE((ROW(A1:A)<=TRANSPOSE(ROW(A1:A)))*A1:A), SIGN(A1:A)^2), ))

0

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.