Teilsumme in Array ohne For-Schleifen

  • Excel

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Gambler.

    Muss das unbedingt in VBA sein oder machst du das, weil du's nicht besser weißt??
    Excel hat eine Funktion TEILERGEBNIS.
    Mit Parameter 109 gibt es eine Teilsumme.

    Wenn du's mit VBA machen willst:
    Es reicht eine Schleife, in der du (abhängig vom Datensatz) zu einer der 12 Teilsummen addierst.
    Wie du erkennst, zu welcher Teilsumme addiert werden muss, geht aus deinen Informationen nicht hervor.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ich hatte mir das jetzt so gedacht
    da die eigendliche berechnung und auswahl der datenquelle über vba erfolgen wollte ich es auch weiter so probieren

    Leider funktioniert es so nicht

    Visual Basic-Quellcode

    1. 'Berechnen der einzelnen Monate:
    2. Dim dblEVnach As Double
    3. Dim dblPVnach As Double
    4. For i = 1 To 35040
    5. dblPV = arPV(i, 1)
    6. dblEV = arEV(i, 1)
    7. dblPVnach = arPV(i + 1, 1)
    8. dblEVnach = arEV(i + 1, 1)
    9. 'Januar
    10. Do Until i > 2976
    11. dblEV = dblEV + dblEVnach
    12. dblPV = dblPV + dblPVnach
    13. i = i + 1
    14. Loop
    15. ...
    Wenn du doch die Tabelle hast, verstehe ich nicht ganz, weshalb du das Array überhaupt benötigst.

    Schau dir mal diese Konstruktion an:

    Visual Basic-Quellcode

    1. Summe1 = WorksheetFunction.Sum(Range("A3:A55"))
    2. Summe2 = WorksheetFunction.Sum(Range("A56:A67"))
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Genau sowas habe ich geucht!
    Ich lese alt aus einer Tabelle 35k werte ein multipliziere sie mit einem faktor und dann schreibe ich sie in eine andere tabelle. aus dieser kann ich ja dann nach der konstruktion die werte berechnen.
    was geht denn eigendlich schneller?
    wenn ich das schon vorhandene array über eine case anweisung berechnung oder wenn ich es uber die sum funktion des worksheets mache?
    Die Sum-Funktion.
    Auf solche Dinge ist Excel optimiert.

    Ich kenne deine genauen Anforderungen nicht.
    Vielleicht kannst du auch die ganze Aufgabenstellung hocheffizient als Einzeiler lösen, indem du WorksheetFunction.SumProduct verwendest.
    :)
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Genau sowas habe ich geucht!
    Ich lese alt aus einer Tabelle 35k werte ein multipliziere sie mit einem faktor und dann schreibe ich sie in eine andere tabelle. aus dieser kann ich ja dann nach der konstruktion die werte berechnen.
    was geht denn eigendlich schneller?
    wenn ich das schon vorhandene array über eine case anweisung berechnung oder wenn ich es uber die sum funktion des worksheets mache?