Hier anmelden!

Willkommen bei Excellent

beschleunigen von berechnungen in autofill

Beitrag verlinken am 21.03.2010 geschrieben
  • nach oben
Hi,

habe gerade ein makro erstellt, aber festgestellt, dass alles viel zu lange dauert. Hat jemand eine Idee, wie ich dies beschleunigen kann?

Jede Hilfe rettet mir das Leben
Danke

Application.ScreenUpdating = False
Range("H2").Select
ActiveCell.FormulaR1C1 = _
"=SUMIF('Department Analysis'!C[-7],C[-7],'Department Analysis'!C[-1])"
Range("I2").Select
ActiveCell.FormulaR1C1 = _
"=SUMIF('Department Analysis'!C[-8],C[-8],'Department Analysis'!C[-1])"
ActiveCell.FormulaR1C1 = _
"=SUMIF('Department Analysis'!C[-8],C[-8],'Department Analysis'!C[-1])/1.19"
Range("J2").Select
ActiveCell.FormulaR1C1 = _
"=SUMIF('Department Analysis'!C[-9],C[-9],'Department Analysis'!C[-1])"
Range("H2:J2").Select
Application.Calculation = xlCalculationManual
Selection.AutoFill Destination:=Range("H2:J15000"), Type:=xlFillDefault
Application.Calculation = xlCalculationAutomatic
Call Calculate
Range("H2:J15000").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True
Beitrag verlinken am 23.03.2010 geschrieben
  • nach oben
Hi Karsten,
bei mir geht das ratz-fatz, d.h. unter 1 sec. Miss doch bitte mal die Laufzeit, indem Du zwei Variable deklarierst

Dim varStartTime As Variant
Dim varEndTime As Variant


und als erste Codezeile eingibst

varStartTime = Now()

und Deinen Code am Ende um folgende Zeilen ergänzt

varEndTime = Now()
MsgBox "Laufzeit: " & DateDiff("s", varStartTime, varEndTime) & " Sekunden", vbOKOnly


Damit gibst Du am Ende die Laufzeit in Sekunden aus. Wie lange läuft denn Deine Prozedur?

Prinzipiell könnte man sicher noch einige Selects einsparen, aber das dürfte in Deinem Fall nicht wesentlich zu Buche schlagen.

Gruß - Dirk
Beitrag verlinken am 25.03.2010 geschrieben
  • nach oben
Auf die Schnelle ein wenig ent-Select-iert:
Sub trallalla()

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

      Range("H2").FormulaR1C1 = _
        "=SUMIF('Department Analysis'!C[-7],C[-7],'Department Analysis'!C[-1])"
      Range("I2").FormulaR1C1 = _
        "=SUMIF('Department Analysis'!C[-8],C[-8],'Department Analysis'!C[-1])/1.19"
      Range("J2").FormulaR1C1 = _
        "=SUMIF('Department Analysis'!C[-9],C[-9],'Department Analysis'!C[-1])"
      Range("H2:J2").AutoFill Destination:=Range("H2:J15000"), Type:=xlFillDefault

      ActiveSheet.Calculate

      Range("H2:J15000").Copy
      Range("H2:J15000").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

      Application.CutCopyMode = False

    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

End Sub


Hope that helps

Mit freundlichsten Grüßen

Peter
  • Statistiken: 3 Beiträge | 575 Aufrufe

Hier anmelden

Du bist noch kein Mitglied der Community?

Community-Details

  • Suche nach:

  • Community-Name

    Excellent
    Die Excel-Community von ExcelDaily

  • Dein Gastgeber ist

    Martin Althaus

  • Online seit

    17.03.2008

  • Mitglieder

    454

  • Sprache

    Deutsch

powered by mixxt
  • v1.1.1
  • (highfive)