Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1484to1488
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Code dauert zu lange

VBA Code dauert zu lange
31.03.2016 13:58:57
Gudrun
Hallo zusammen,
ich habe in E und D eine Formel. Diese wird dann automatisch heruntergezogen.
Leider dauert dieser Code bei 15000Zeilen etwas zu lange. Würde sowas schneller gehen?
Sub Test
Sheets("Rollregal").Select
Range("D2") = "=R[1]C[-3]"
Range("E2") = "=SUMIF(C[-4]:C[-2],RC[-1],C[-2])"
Range("D2:E2").AutoFill Destination:=Range("D2:E" & Cells(Rows.Count, "A").End(xlUp).Row),   _
_
Type:=xlFillDefault
End Sub

Ich möchte das danach, dass die Formel weg ist, und der Wert fest drin steht.
Kann mir da jemand helfen?
Danke
Gudrun

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code dauert zu lange
31.03.2016 14:22:55
Werner
Hallo Gudrun,
ungetestet
Sub Test
Application.Calculation = xlCalculationManual
With Sheets("Hochregal")
.Range("D2") = "=R[1]C[-3]"
.Range("E2") = "=SUMIF(C[-4]:C[-2],RC[-1],C[-2])"
.Range("D2:E2").AutoFill Destination:=.Range("D2:E" & .Cells(Rows.Count, "A").End(xlUp).Row), _
Type:=xlFillDefault
Application.Calculation = xlCalculationAutomatic
.Range("E:D").Value = .Range("E:D"). Value
End With
End Sub
Gruß Werner

AW: VBA Code dauert zu lange
31.03.2016 14:29:21
Rudi
Hallo,
Sub Test()
With Sheets("Rollregal")
With .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp))
.Offset(, 3).FormulaR1C1 = "=R[1]C[-3]"
.Offset(, 4).FormulaR1C1 = "=SUMIF(C[-4]:C[-2],RC[-1],C[-2])"
With .Range(.Offset(, 3), .Offset(, 4))
.Copy
.PasteSpecial xlPasteValues
End With
End With
End With
Application.CutCopyMode = False
End Sub
Gruß
Rudi

Anzeige
AW: VBA Code dauert zu lange
31.03.2016 14:32:03
Daniel
Hi
probier mal das:
With Sheets("Rollregal")
With .Range("D2:E" & .Cells(.Rows.Count, 1).End(xlUp).Row)
.Columns(1).FormulaR1C1 = "=R[1]C[-3]"
.Columns(2).FormulaR1C1 = "=if(RC[-1]=R[-1]C[-1],R[-1]C,SUMIF(C[-4]:C[-2],RC[-1],C[-2])) _
.Formula = .Value
End With
End With
Autofill ist in VBA meistens unnötig, man kann die Formeln auch gleich in alle benötgigten Zellen schreiben.
Ich würde die Zellbezüge auf die Spalten wenn möglich absolut setzen. Das macht die Formel in R1C1-Schreibweise kürzer und übersichtlicher (in R1C1 nur das relativ setzen, was unbedingt relativ sein muss).
zur Beschleunigung überprüft meine Formel, ob der Vergleichswert mit dem Vergleichswert aus der darüberliegenden Zeile übereinstimmt und übernimmt wenn ja auch den Zellwert für E aus der darüber liegenden Zeile.
Damit muss dann das Zeitaufwendige SummeWenn nicht jedesmal ausgeführt werden, sondern nur dann wenn sich der Vergleichswert ändert.
Hilft natürlich nur dann, wenn die Tabelle sortiert sind und mehrere gleiche Vergleichswerte direkt untereinander stehen (aber im Sortieren ist Excel sehr schnell, das könnte man hier dann ggf ausnutzen)
Gruß Daniel

Anzeige
AW: VBA Code dauert zu lange
31.03.2016 14:37:01
UweD
Ich auch noch...

Sub Test()
Dim LR&
Application.ScreenUpdating = False
With Sheets("Rollregal")
LR = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("D2:D" & LR) = "=R[1]C[-3]"
.Range("E2:E" & LR) = "=SUMIF(C[-4]:C[-2],RC[-1],C[-2])"
.Range("D2:E" & LR) = .Range("E2:E" & LR).Value
End With
End Sub
Gruß UweD

Nachfrage
31.03.2016 15:36:12
Gudrun
Danke an alle...
aber ist das normal das es bei ca. 15 000 Zeilen ca. 3 min dauert?
Bei allen Codes.
Wenn ich es manuell mache sind es gerade mal paar Sekunden.
Danke
gudrun

Anzeige
Nachfrage
31.03.2016 18:26:48
Gudrun
Danke an alle...
aber ist das normal das es bei ca. 15 000 Zeilen ca. 3 min dauert?
Bei allen Codes.
Wenn ich es manuell mache sind es gerade mal paar Sekunden.
Danke
gudrun

AW: Nachfrage
31.03.2016 22:06:23
Daniel
HI
sicher, dass die Berechnung auch vollständig über alle Zellen durchgelaufen ist?
Gruß Daniel

AW: Nachfrage
31.03.2016 22:28:16
Gudrun
Hallo Daniel,
ja aber es dauert schon sehr lange.
Der Code soll dann noch weiter gehen. Aber wenn das scho über 3 min dauert. ohje :-(
LG gudrun

AW: Nachfrage
31.03.2016 22:39:51
Daniel
Wie sieht denn dein Code bisher aus?
Kann man die Liste so sortieren, dass alle Werte, die zusammen gehören auch direkt untereinander stehen?
Gruß Daniel

Anzeige
AW: Nachfrage
01.04.2016 09:25:53
Gudrun
Hallo Daniel:
schau mal im meinen Beitrag nach vom 19.03.2016 15:33:19
Wollte dir einen link schicken, geht leider nicht.
Hoffe du kommst damit klar
Danke
Grudrun

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige