Code Ausführungsdauer verkürzen?
Lorenz
Laut untenstehenden Code wird aus 31 Blättern mit Namen 1., 2., 3., ...... die jeweiligen Summen gebildet, in Abhängigkeit von dem Kriterium in Spalte A. Es sind aber die Einträge in den einzelnen Blättern unter umständen nicht in derselben Zeile. Darum die "verzwickte" Formel. Leider braucht die Berechnung (Ausführung des Codes) bis zu 120 Sekunden. Läßt sich mit der Art wie dies von mir "fabriziert" wurde eventuell verbessern?
Sub Berechnen()
getMoreSpeed True
Range("B6:BD89") = ""
With Range("B2:BD2")
.FormulaR1C1 = "=MySPALTE"
.Value = .Value
End With
With Range("V2")
.FormulaR1C1 = "=MySPALTE_2"
.Value = .Value
End With
With Range("B6:B89,D6:D89,N6:N89,V6:V89,Y6:Y89,Z6:Z89,AA6:AA89,AB6:AB89,AC6:AC89,AE6:AE89,AF6: _
AF89,AG6:AG89,AH6:AH89")
.FormulaLocal = "=SUMME(SUMMEWENN(INDIREKT(""'""&{""1."".""2."".""3."".""4."".""5."".""6.""."" _
7."".""8."".""9."".""10."".""11."".""12."".""13."".""14."".""15."".""16."".""17."".""18."".""19."".""20."".""21."".""22."".""23."".""24."".""25."".""26."".""27."".""28."".""29."".""30."".""31.""}&""'!$A:""&MySpalte);$A6;INDIREKT(""'""&{""1."".""2."".""3."".""4."".""5."".""6."".""7."".""8."".""9."".""10."".""11."".""12."".""13."".""14."".""15."".""16."".""17."".""18."".""19."".""20."".""21."".""22."".""23."".""24."".""25."".""26."".""27."".""28."".""29."".""30."".""31.""}&""'!""&MySpalte&"":""&MySpalte&"""")))"
With .CurrentRegion
.SpecialCells(Type:=xlCellTypeFormulas, Value:=xlErrors).Value = 0
.Value = .Value
End With
End With
With Range("AI6:AI89,AJ6:AJ89,AK6:AK89,AL6:AL89,AM6:AM89,AN6:AN89,AO6:AO89,AP6:AP89,AQ6:AQ89, _
AR6:AR89,AS6:AS89,AT6:AT89,AU6:AU89,AV6:AV89,AW6:AW89,AX6:AX89,AY6:AY89,AZ6:AZ89,BA6:BA89,BB6:BB89,BD6:BD89")
.FormulaLocal = "=SUMME(SUMMEWENN(INDIREKT(""'""&{""1."".""2."".""3."".""4."".""5."".""6."".""7. _
"".""8."".""9."".""10."".""11."".""12."".""13."".""14."".""15."".""16."".""17."".""18."".""19."".""20."".""21."".""22."".""23."".""24."".""25."".""26."".""27."".""28."".""29."".""30."".""31.""}&""'!$A:""&MySpalte);$A6;INDIREKT(""'""&{""1."".""2."".""3."".""4."".""5."".""6."".""7."".""8."".""9."".""10."".""11."".""12."".""13."".""14."".""15."".""16."".""17."".""18."".""19."".""20."".""21."".""22."".""23."".""24."".""25."".""26."".""27."".""28."".""29."".""30."".""31.""}&""'!""&MySpalte&"":""&MySpalte&"""")))"
With .CurrentRegion
.SpecialCells(Type:=xlCellTypeFormulas, Value:=xlErrors).Value = 0
.Value = .Value
End With
End With
getMoreSpeed False
End Sub
Hinter MySpalte steht folgende benannte Formel: "=LINKS(ADRESSE(1;MIN(SPALTE());4);1+(MIN(SPALTE())>26))" (wird nur die Zeilenbuchstaben ausgegeben).getMoreSpeed =
Sub getMoreSpeed(bDoIt As Boolean)
Application.ScreenUpdating = Not (bDoIt)
Application.EnableEvents = Not (bDoIt)
Application.DisplayAlerts = Not (bDoIt)
End Sub
?Hat vielleicht jemand ne Idee?Danke & Gruß
Lorenz