Anzeige
Archiv - Navigation
1052to1056
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

Kopiervorgang beschleunigen

Kopiervorgang beschleunigen
01.03.2009 21:22:48
TCO99
Hallo zusammen,
ich habe eine Datei, in der sich 4 Arbeitsblätter befinden. Die erste Seite ("Ressourcen") beinhaltet die eigentlichen Daten. Diese sind für die weiteren Schritte aber nicht in geeigneter Form vorliegend. Daher nimmt ein Makro die Aufbereitung der Daten vor. Dazu kopiert es die ersten Spalten (A1:P501) 30 mal untereinander ins Blatt "Hilfstabelle", welches extra dafür angelegt wird. Danach kopiert es immer die nächsten 8 Spalten untereinander ebenfalls in Blatt "Hilfstabelle". Somit sind die folgenden jeweils 8 Spalten nicht mehr nebeneinander, sondern nur noch untereinander, was eine leichtere Sortierung und Filterung ermöglicht. Dann werden die Ergebnisse sortiert und das Endergebnis wird dann ins Blatt "SortierteDaten" kopiert. Zusätzlich werden zwei Spalten des Hilfsblattes sortiert und ohne Duplikate ins Blatt "Altkurse" kopiert. Anschließend wird die "Hilfstabelle" wieder gelöscht. Damit ist die Aufbereitung der Daten fertig.
Jetzt ist es aber so, dass dieser Prozess ziemlich lange dauert, weil ich es mit dem Makrorecorder aufgenommen und mit meinen bescheidenen Mitteln angepasst habe. Auch wenn es bei dieser Beispielmappe nicht besonders lange dauert, bei meiner eigentlichen Datei dauert es schon ziemlich lange.
Wie könnte ich diesen Prozess beschleunigen?
https://www.herber.de/bbs/user/59898.xls
Gruß
Erdogan
PS: Feedback ist selbstverständlich.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopiervorgang beschleunigen
01.03.2009 23:24:39
Daniel
Hi
mal ne Frage, gibt es komplexe Formeln in der Datei, die dann jedesmal neu berechnet werden?
in diesem Fall könnte ein "Application.Calculation = xlManual" am Anfang und ein "Application.Calculation = xlAutomatic" am Ende des Codes helfen, die Sache zu beschleunigen.
was ein Problem sein könnte, ist ,daß du die vollständige Zellreferenzierung (dh immer Sheet(...).Range(...).Aktion) nur teilweise, aber noch nicht vollständig umgesetzt hast und manchmal noch mit Range(...).Select / Selection.Aktion arbeitest.
hier solltest du umstellen und überall nach dem erstgenannten Schema arbeiten.
hierzu noch als Tipp:
- in der SORT-Funktion muss auch beim Parameter "Key1-3" der Zellbereich auf diese Weise vollständig angegeben werden, damit die SORT-Funktion auf einem nichtselektierten Tabellenblatt läuft:
Beispiel:

Sheets("xyz").Cells.Sort Key1:=Sheets("xyz").Range("A1"), ...


sollte der Code dann immer noch langsam sein, setze mal zwischen den einzelnen Teilen des Codes Haltepunkte (hierzu auf den linken Rand des Codefensters klicken, es erscheint ein brauner Punkt, hier stoppt das Makro)
und lasse den Code von Haltepunkt zu Haltepunkt laufen (mit dem Dreieck-Icon aus der Symbolleiste "Debuggen") um herauszufinden, welcher Teil des Codes besonders lange braucht.
dann kann man geziehlt darauf eingehen.
Gruß, Daniel

Anzeige
AW: Kopiervorgang beschleunigen
02.03.2009 00:27:01
TCO99
Hallo Daniel,
vielen Dank für deine Antwort.
Es befinden sich eigentlich keine komplexen Formeln in der Datei aber ich nutze die Daten zusammen mit anderen Kollegen. Die Daten werden in bestimmten Zeitabständen an einen Ordner geschickt, den wir zusammen nutzen und daher rufen wir die Daten immer wieder ab und bereiten sie durch das Makro auf, um mit ihnen weiterarbeiten zu können. Wir nutzen also eine eigenständige Datei als eine Art Datenbank mit einem einzigen Worksheet (die mit den Daten im gemeinsamen Ordner).
Du hast mir viele neue Tipps gegeben, die ich erst umsetzen muss, daher brauche ich jetzt etwas, bis ich dir ein Feedback geben kann. Aber jetzt schon danke, dass du dir die Zeit genommen hast.
Freundliche Grüße
Erdogan
PS: Feedback kommt noch.
Anzeige
AW: Kopiervorgang beschleunigen
02.03.2009 16:21:18
tco99
Hallo zusammen, Hallo Daniel,
die Zellreferenzierung habe ich dank dir und Sepp (Josef Ehrensberger) folgendermaßen umgesetzt (einige Beispiele):
Sheets("Hilfstabelle").Range("A2:IV15501").Sort Key1:=Sheets("Hilfstabelle").Range("A1")
....
Sheets("Hilfstabelle").Range("A:P").Copy Destination:=Sheets("AufbereiteteDaten").Range("A:P")
....
Sheets("Hilfstabelle").Range("I:J").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Columns("J:J"), Unique:=True
....
Sheets("Altkurse").Range("A1:B15501").Sort Key1:=Sheets("Altkurse").Range("A1"), Order1:=xlAscending, Key2:=Sheets("Altkurse").Range("B1") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
....
Sheets("SortierteDaten").Range("K:P").Delete Shift:=xlToLeft
....
Sheets("SortierteDaten").Range("A:H").EntireColumn.AutoFit
....
Sepp hatte mich auf die Zellreferenzierung hingewiesen, jedoch brauchte ich noch deine Ratschläge. So habe ich sie vollständig (glaub ich jedenfalls) umgesetzt.
Ich bilde mir ein, dass der Code jetzt etwas schneller läuft :-)
Ich bedanke mich sehr herzlich bei dir, weil du dir die Mühe gemacht hast, mir ausführlich zu schreiben und auch, wie ich den Code im Editor abschnittsweise prüfen kann!
Viele Grüße
Erdogan
PS: ich wünschte, ich könnte auch mal einer von denen sein, die helfen und nicht immer Hilfe bekommen.
Anzeige
AW: Danke für die Rückmeldung
02.03.2009 18:03:55
Daniel

PS: ich wünschte, ich könnte auch mal einer von denen sein, die helfen und nicht immer Hilfe bekommen

.
wenn du dich weiterhin mit Excel beschäftigst, ist das nur eine Frage der Zeit, bis du selber hier Fragen beantworten kannst, das dauert gar nicht so lange, sobald der nächste fragt, warum sein Makro so langsam sei, kannst vielleicht sogar du schon helfen.
Gruß, Daniel

AW: Danke für die Rückmeldung
02.03.2009 22:39:19
TCO99
Hallo Daniel,
wenn jemand die gleiche Frage stellt wie ich es getan habe, könnte das gut sein :-)
Freundliche Grüße
Erdogan

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige