Anzeige
Archiv - Navigation
844to848
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
844to848
844to848
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro beschleunigen bitte

Makro beschleunigen bitte
13.02.2007 17:09:21
Henrik
hallo excelexperten,
habe folgende bausteine in einem Makro, die auch funktionieren.
For n = 1 To maxi
Worksheets("Auswertung").Cells(4 + n, 38).FormulaR1C1 = "=IF(AND(HOUR(Daten!R" & 4 + n & "C[-25])>=HOUR(R7C37),HOUR(Daten!R" & 4 + n & "C[-25])=VALUE(LEFT(R5C37,1)),WEEKDAY(Daten!R" & 4 + n & "C[-25])=VALUE(LEFT(R5C37,1)),WEEKDAY(Daten!R" & 4 + n & "C[-25]) Next n
For n = 1 To maxi
If Worksheets("Auswertung").Cells(4 + n, 38).Value = "nix" Then
Worksheets("Auswertung").Cells(4 + n, 38).Delete Shift:=xlUp
n = n - 1
End If
Next n
die ertse for schleife ist schön schnell.Das Problem ist die zweite for schleife. da kann ich nebenbei kühe melken. (anmerkung: der wert von maxi kann bis zu 36000 erreichen.)
hat jemand eine idee wie ich das beschleunigen kann?
kann ich die schleifen kombinieren oder gibt es eine andere Möglichkeit, die Zellen mit dem Wert NIX zu löschen?
Danke im voraus.
henrik

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro beschleunigen bitte
13.02.2007 18:30:00
Franc
Hi,
zum 1. makro. Mit
Worksheets("Auswertung").Range(Cells(4 + n, 38), Cells(4 + maxi, 38)).FormulaR1C1 =
gehts noch viel schneller ^^
Beim 2. verstehe ich den Sinn nicht aber du hast da nen dreher drin.
Mach mal das draus
For n = maxi To 1 Step -1
If Worksheets("Auswertung").Cells(4 + n, 38).Value = "nix" Then
Worksheets("Auswertung").Cells(4 + n, 38).Delete Shift:=xlUp
End If
Next n
Berichtigung ^^
13.02.2007 20:07:00
Franc
statt 4 + n natürlich 5, weil es ja kein n mehr gibt ^^ also
Worksheets("Auswertung").Range(Cells(5, 38), Cells(4 + maxi, 38)).FormulaR1C1 =
AW: Makro beschleunigen bitte
13.02.2007 18:37:00
EtoPHG
Hallo Henrik,
Deine 2te Routine sollte von maxi nach 1 laufen statt so wie Du das hast.
Löschen IMMER von unten nach oben.
Also

For n = maxi To i step -1
If Worksheets("Auswertung").Cells(4 + n, 38).Value = "nix" Then
Worksheets("Auswertung").Cells(4 + n, 38).Delete Shift:=xlUp
End If
Next n

Dann fügst Du noch foigende Xeilen VOR und NACH deinem Code ein

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
... Dein Code hier
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

Anzeige
Danke euch, werds morgen testen
13.02.2007 22:44:00
Henrik
konnte es noch nicht testen. musste noch etwas zum valentinstag organisieren.:)
vielen dank erstmal, meld mich nochmal, ob es funktioniert.
gruß henrik
AW: Makro beschleunigen bitte
14.02.2007 14:32:00
funktioniert,
Eure Vorschlöge funktionieren. Sind leider noch zu langsam.
Lasse nun die Daten sortieren, so dass zellen mit dem Wert "nix" als letztes aufgeführt werden und lösche dann ab dem ertsen "nix"wert bis "maxi"wert die zellen.
thx für eure mühe.
gruß henrik
AW: Makro beschleunigen bitte
15.02.2007 19:53:52
Franc
also ich habe das bei mir mit 10.000 Zeilen getestet und das eintragen war binnen einer sek erledigt und ein paar nix dazwischen prüfen hat auch nur ca. 3 - 4 sek gedauert.
Eventuell ist das gesamte Makro überholungsbedürftig.
Am besten du schickst das nochmal gesamt zu, falls es nochmal liest. ^^
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige