VBA - SumIf(s) vereinfachen wegen performence
27.03.2018 12:56:13
Andreas
ich habe eine VBA-Herausforderung die ich im Moment nicht lösen kann und die mein Makro ziemlich langsam macht.
Durch den Durchlauf mit Haltpunkten habe ich herausgefunden, dass folgende Codes mein Makro sehr langsamm macht.
...
For i = 1 To d + 1
For z = 5 To b
wrksht.Cells(z, a + i - 1).Value = WorksheetFunction.SumIfs(objVolumenBereich.Offset(0, i - 1), objKriterienBereich.Offset(0, e - 1), wrksht.Cells(z, 1).Value, _
objKriterienBereich.Offset(0, f - 1), wrksht.Cells(z, 2).Value)
Next z
wrksht.Cells(3, a - 1 + i).Value = WorksheetFunction.Sum(Range(Cells(5, a - 1 + i), Cells(b, a - 1 + i)))
Next i
und
For i = 1 To 7
For z = 5 To b
wrksht.Cells(z, 24 + i).Value = wrksht.Cells(z, 3 + i).Value / wrksht.Cells(3, 3 + i).Value
Next z
Next i
Gibt es eine Möglichkeit dies effizienter zu machen? Problem ist wohl auch das die Basistabelle über 40.000 Zeilen hat.
Meine Idee wäre das die "i"-Schleife nicht komplett notwendig ist. Also ich mache die Suche in den Kriterienbereichen nur einmal und summiere dann alle sieben Spalten gemäß Kriterien. Im Moment suche ich für jedes i wieder die Kriterien.
Jemand eine Idee.
Vielen Dank im Voraus.
Andreas