Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1780to1784
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

Code optimieren

Code optimieren
23.09.2020 15:51:58
Richi
Ciao Zäme
Ich hoffe jemand kann mir beim optimieren meines Codes behilflich sein. Im angefügten File sind 2 Module hinterlegt.
Module2:
Funktioniert grundsätzlich, jedoch bei grösseren Datenmengen wird es unheimlich langsam. Nehme an, dass der Grund beim einfüllen jeder einzelnen Zelle liegt (Comments und Farbe.
Modul3:
Ist der Code den ich mit dem ich die Optimierung erreichen will. Unterschied zu Module2 ist, dass jeweils nur in der ersten
Zelle alle Infos (Comments), hinterlegt und die Zellenfarbe mit errechnetem Range abgefüllt werden. Mein Problem ist, dass nicht mehr alle Zeileneinträge aus der Quellentabelle "Summaryplanung" übernommen werden. Muss irgendwie mit der Referenzierung der Zellen einen Zusammenhang haben. Ich komm nicht darauf warum.
Inputs eurerseits wären sehr hilfreich.
Liebe Gruess
Richi
https://www.herber.de/bbs/user/140382.xlsm

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

Betreff
Datum
Anwender
Anzeige
Thema 1 von 2 - Performance Gantt
23.09.2020 19:18:35
2
Hi Richi
16 Zeilen (Tabelle Quelle) multipliziert mit 244 Spalten (Tabelle Ziel) = 3904 Durchläufe
Wie viele Zeilen sind im Normalfall vorhanden und wie lange wartest du ungefähr?
Datum (= Ganzzahl) minus fixer Wert ergibt deine Spaltennummer. Z.B. Datum 19.10.2020 - 44118 = 5
Da dein Gantt im 15 min. Takt aufgebaut ist, müsste man zusätzlich die Nachkommastellen verwerten. 1/24 = Stunden, 1/24/60 = Minuten usw.
(ich hoffe du verstehst, sonst mal zwecks Inspiration nach entsprechender Formellösung suchen, sinngemäss auf 1/4-Stunden runden)
Auf alle Fälle sollte die zweite For-Next-Schleife weg, bevor du das System in Modul 3 adaptierst.
Als Alternative zum beschriebenen Ansatz, könnte man es auch mit der Formel VERGLEICH() mit ungefährer Übereinstimmung probieren (Suchbereich Ziel Zeile 7). In VBA: Application.Match()
cu
Chris
Anzeige
AW: Thema 1 von 2 - Performance Gantt
23.09.2020 19:48:42
2
Danke Chris
Fertig ausgebaut werden es gegen 1500 Zeilen. Aktuell habe ich 702 Zeilen und das Prg. läuft ca. 10-15min. wenn es dann mal durchläuft. Beim zweiten Run tut sich mein Arbeitsspeicher schwer. Stürzt ab. Ich bin "VBA-Anfänger" das macht es für mich nicht einfach neue Lösungswege zu finden, da mir gar nicht klar ist, in welche Richtung ich da suchen muss um For- Next-Schleifen eliminieren zu können.
Liebe Gruess
Richi
AW: Thema 1 von 2 - Performance Gantt
23.09.2020 21:36:57
2
möglicherweise ist es auch schneller wenn du einige Berechnungen aus dem Stammblatt direkt im code machst. der Zugriff auf Zellwerte dauert auch ein wenig. z.b. diese Spaltenanzahl in Spalte Q.
Is aber nur ne Idee. application.screenupdating = false hilft auch sehr.
Anzeige
AW: Thema 1 von 2 - Performance Gantt
24.09.2020 08:53:32
2
Hi Richi
Es hat erstmal nichts mit VBA zu tun, sondern mit normaler Mathematik (+, -, *, /). Hierzu müsstest du dich schon ein wenig selber mit der Rechenlogik von Excel in Kombination mit Datum/Uhrzeit auseinander setzen (auf 15min. runden wäre ein Beispiel zum Selbststudium).
19.10.2020 07:00 = Spalte 5
19.10.2020 18:30 = Spalte 51
Hast du erstmal die Spaltennummern, dann lässt sich der ganze Bereich bearbeiten, ohne die Zellen zu durchlaufen.
Range(Cells(xZeile, StartSpalte),Cells(xZeile, EndeSpalte))
Wie erwähnt, Start- und Endspalte liesse sich errechnen oder mittels Formel VERGLEICH() finden.
=VERGLEICH(I2;'W-sicht Modul2'!7:7;1)
cu
Chris
Anzeige
AW: Thema 1 von 2 - Performance Gantt
24.09.2020 18:14:19
2
Hallo Chris
Hab deinen Rat umgesetzt. Mit Match Funktion. Ist richtig schnell geworden. Laufzeit ca. 30 sek.
Herzlichen Dank
Gruss
Richi
AW: Thema 1 von 2 - Performance Gantt
24.09.2020 19:01:36
2
Hi Richi
Danke für die Rückmeldung.
Wenn du möchtest, lade noch einmal die Datei mit aktuellem Code ins Forum und ich schaue rein. 30 sek bei 1500 Zeilen sind OK, aber ich vermute einen weiteren Bremsklotz.
Sollte Thema 2 aus dem Ursprungsbeitrag noch aktuell sein, starte einen neuen Faden (mit frischem Code) und markiere als offen.
cu
Chris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige