Array kumulative Summe

9

Ich habe ein Integer-Array von Werten und möchte einen einfachen Weg finden, um seine kumulative Summe ( S = Data(1) + Data(2) + ... + Data(x) ) zu berechnen.

Ich habe diese Funktion bereits erstellt:

%Vor%

und es funktioniert gut. Ich frage mich jedoch, ob es einen besseren Weg gibt, dies zu tun (hauptsächlich ohne die Verwendung einer zusätzlichen Funktion und im Wesentlichen nur mit Excel-Funktionen wie Application.Sum ). Ich habe eine kleine Suche im Internet durchgeführt, aber auf dieser Grundlage nichts gefunden.

Ich weiß, dass ich keinen Code korrigieren möchte, und ich frage nur nach einer Alternative, die nicht der eigentliche Zweck dieses Forums ist. Allerdings vermute ich auch, dass die Antwort einfach sein könnte, also ... Wenn mir jemand helfen will, schätze ich sehr, sehr! Wenn Sie eine Antwort auf eine ähnliche Frage finden, teilen Sie bitte den Link mit mir und ich werde diesen entfernen.

Es tut mir sehr leid für meinen Mangel an explizit auf meine Nachfrage: Ich möchte einfach eine einfache Möglichkeit zur Berechnung der kumulativen Summe mit einfachen Funktionen auf der Makro-Routine selbst finden, OHNE die von mir erstellte CumulativeSum -Funktion zu verwenden jede andere Funktion, die vom Benutzer erstellt wurde.

    
Pspl 21.09.2017, 12:20
quelle

3 Antworten

2

Versuchen Sie Folgendes:

%Vor%     
MacroMarc 21.09.2017, 19:07
quelle
9

Wenn Sie ein kumulatives Array Array wie Array (a, a + b, a + b + c) aus Array (a, b, c) erreichen wollen, dann ist dies die Funktion to erreichen Sie es, wenn Sie Start- und Endparameter übergeben möchten:

%Vor%

Wenn ein Array nur summiert wird , ist dies der richtige Weg: Sie können WorksheetFunction. verwenden und das Array als Argument übergeben. So erhalten Sie alle Funktionen, z.B. Average , Min , Max usw.:

%Vor%

Wenn Sie die Summe von einem gegebenen Anfang bis zu einem bestimmten Ende verwenden möchten, ist es wahrscheinlich am einfachsten, ein neues Array zu erstellen und es vollständig zu summieren. In Python heißt das Slicen, in VBA könnte das etwas manuell gemacht werden:

%Vor%

Die Idee ist, dass die Funktion generateArray ein neues Array zurückgibt. Somit ist seine vollständige Summe, was Sie brauchen. Es funktioniert auch mit Sammlungen, nicht nur mit Arrays. Seien Sie vorsichtig, wenn Sie Sammlungen verwenden, beginnen sie mit Index 1, während Arrays (normalerweise) mit 0 beginnen. Wenn Sie die gleiche Indizierung für Arrays und Sammlungen verwenden möchten, ändern Sie die Funktion generateArray in diese:

%Vor%

Oder schreiben Sie Option Base 1 oben und das Array beginnt bei 1 (nicht empfohlen!).

    
Vityata 21.09.2017 12:22
quelle
2

Für kumulative Summe versuchen Sie folgendes

%Vor%

BEARBEITEN:

%Vor%

Der obige Code aktualisiert das Array arr von
1, 2, 3, 4, 5, 6, 7, 8, 9
zu
1, 3, 6, 10, 15, 21, 28, 36, 45

    
Mrig 21.09.2017 12:38
quelle