Code optimieren
07.08.2015 13:05:54
Marcel
ich habe einen VBA-Code geschrieben, der sich inzwischen leider ein wenig aufgebläht hat (3000 Zeilen). Ich würde ihn gerne etwas "verkürzen"/"optimieren", um die Performance zu verbesseren. Zudem wird sich der Code voraussichtlich noch weiter verlängern.
Dazu folgender Auszug:
Range("E2").Formula = _
"=IF(D2=0,0,((SUMIFS(Tabelle1!D:D,Tabelle1!B:B,"">=1"",Tabelle1!B:B,""=1"",Tabelle1!C:C,""=1.16"",Tabelle1!B:B,""=1.16"",Tabelle1!C:C,""=1.33"",Tabelle1!B:B,""=1.33"",Tabelle1!C:C,""=1.50"",Tabelle1!B:B,""=1.50"",Tabelle1!C:C,""=1.66"",Tabelle1!B:B,""=1.66"",Tabelle1!C:C,""=1.83"",Tabelle1!B:B,""=1.83"",Tabelle1!C:C,""=2"",Tabelle1!B:B,""=2"",Tabelle1!C:C,""=2.16"",Tabelle1!B:B,""=2.16"",Tabelle1!C:C,""=2.33"",Tabelle1!B:B,""=2.33"",Tabelle1!C:C,""=2.50"",Tabelle1!B:B,""=2.50"",Tabelle1!C:C,""=2.66"",Tabelle1!B:B,""=2.66"",Tabelle1!C:C,""=2.83"",Tabelle1!B:B,""=2.83"",Tabelle1!C:C,""
Diese Logik geht dann noch so weiter (Blockanzahl im hohen 2-stelligen Bereich), ist natürlich nicht sehr effizient und hat inzwischen zu einer "Procedure too long"-Fehlermeldung geführt (die ich bisher mit einer "call"-Anweisung umgehe.
Das Ganze gibt es dann im gleichen Code außerdem in ähnlicher/gleicher Logik mit "Summenprodukt":
Range("M2").Formula = "=SUMPRODUCT((Tabelle1!H:H>=1)*(Tabelle1!H:H=1.16)*(Tabelle1!H:H=1.33)*(Tabelle1!H:H=1.50)*(Tabelle1!H:H=1.66)*(Tabelle1!H:H=1.83)*(Tabelle1!H:H=2)*(Tabelle1!H:H=2.16)*(Tabelle1!H:H=2.33)*(Tabelle1!H:H=2.50)*(Tabelle1!H:H=2.66)*(Tabelle1!H:H=2.83)*(Tabelle1!H:H
Kann mir hierbei jemand helfen? (vielleicht das Ganze mit einer "For-Schleife" oder ähnlichem und Variablen umzusetzen, dass das nicht jeweils manuell in jede Zelle geschrieben werden muss?)Über jede Hilfe oder Ideen bin ich dankbar! :)
Viele Grüße
Marcel