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

Warum ist dieser Code so langsam?

Warum ist dieser Code so langsam?
21.11.2019 09:21:15
HPG
Hallo zusammen,
ich habe mir ein Makro gebastelt, das aus einem Tabellenblatt mit knapp 54 000 Zeilen Diagramme erstellen soll. Es funktioniert auch soweit, nur dauert es länger, als ich erwartet hätte. Der Code für ein Diagramm sieht folgendermaßen aus:
With Daten.Shapes.AddChart(xlXYScatter).Chart
.SetSourceData Source:=Range("Daten!G:G,Daten!M:M")
.ChartTitle.Delete
.Legend.Delete
.SeriesCollection(1).MarkerStyle = 2
.SeriesCollection(1).MarkerSize = 2
.Axes(xlValue).HasTitle = True
.Axes(xlValue).AxisTitle.Caption = "Leistung [kW]"
.Axes(xlCategory).HasTitle = True
.Axes(xlCategory).AxisTitle.Caption = "Windgeschwindigkeit [m/s]"
.ChartArea.Copy
.Parent.Delete
End With
Für diesen Arbeitsschritt braucht Excel ca. 2-3 Minuten, und da es mehrere Diagramme sind, dauert es halt insgesamt nervig lange. Und wenn ich versuche, noch größere Datenmengen (ca. 160 000 Zeilen) zu bearbeiten, bekomme ich eine Meldung, das der Arbeitsspeicher nicht ausreicht.
Kann man an dem Code noch etwas optimieren oder liegt das Problem tatsächlich am Rechner o.ä.?
Schönen Gruß
Hanns

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

Betreff
Datum
Anwender
Anzeige
nur ne Idee...
21.11.2019 09:36:41
Oberschlumpf
Hi,
diese Zeile
.SetSourceData Source:=Range("Daten!G:G,Daten!M:M")
bearbeitet alle Zellen in den Spalten G + M.
Mit alle Zellen meine ich alle, nicht nur die benutzten Zellen.
(so war das zumindest in früheren XL-Versionen)
...änder mal G:G + M;M so um, dass tatsächlich nur die benutzten Zellen betroffen sind, z Bsp:
.SetSourceData Source:=Range("Daten!G2:G60000,Daten!M2:M60000")
Hilfts?
Wenn nicht, bin ich wieder raus, das war meine einzige Idee.
Ciao
Thorsten
AW: nur ne Idee...
21.11.2019 09:51:05
HPG
Danke für die Antwort, Thorsten, aber leider löst es mein Problem nicht.
Anzeige
AW: Warum ist dieser Code so langsam?
21.11.2019 15:37:18
Piet
Hallo
Ist der Befehl: - Application.ScreenUpdating ? False im Code? Ist auch nur eine Idee ...
mfg Piet
AW: Warum ist dieser Code so langsam?
21.11.2019 15:43:53
HPG
Ja, ist er. Da die Geschwindigkeit auch deutlich variiert, je nachdem wieviel Daten man reinkippt, denke ich, daß es wohl an der schieren Datenmenge liegt.
Aber trotzdem danke für die Antwort.
AW: Warum ist dieser Code so langsam?
21.11.2019 17:05:19
Daniel
Hi
naja, das ist schon ne ganze Menge, was du Excel da zu tun gibst.
in Früheren Versionen war eine Datenreihe auf maximal 32.000 Datenpunkte begrenzt.
allerdings mein Bildschrim hat c.a. 2500 Pixel, dh mehr als 2000 Datenpunkte kannst du sowieso nicht separat darstellen und auch im Ausdruck wird man mehr nicht erkennen können.
Erstelle für die Diagrammerstellung daher besser eine Tabelle, in welchem du die Datenpunkte reduzierst (z.B. nur jede 10. Zeile behalten, oder Mittelwertbildung über 10 Zeilen).
Gruß Daniel
Anzeige
AW: Warum ist dieser Code so langsam?
22.11.2019 08:04:38
HPG
Moin,
das wäre in der Tat eine Idee, wie ich damit umgehen könnte,v.a. weil die Dateien theoretisch noch größer werden könnten. Mir ging's ja auch in erster Linie darum, ob es ein Code- oder ein Datenmenegenproblem ist.
Vielen Dank nochmal für den Tip.
Schönen Gruß
Hanns

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige