Anzeige
Archiv - Navigation
1936to1940
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
Datensätze blockweise in einzelne Diagramme
01.08.2023 17:10:51
Andi K.
Hallo zusammen,

ich möchte aus einem File mit 360000 Zeilen die Daten immer Blockweise in einzelne Digramme plotten. Und zwar in folgender Art und Weise:
Zeile 0-6000 --> Diagramm 1
Zeile 6001 - 12000 --> Diagramm 2
Zeile 12001 - 18000 --> Diagramm 3

Mit folgendem Code habe ich das für die ersten beiden Blöcke auch schon hinbekommen. Das ganze jetzt aber insgesamt 120 mal hintereinander zu schreiben scheint mir nicht sehr sinnvoll. Das lässt sich doch bestimmt über eine Schleife lösen. Hab schon lange rum probiert, komme aber auf keinen grünen Zweig. Ich hoffe ihr könnt mir helfen.

Hier mal der Code für die ersten beiden Blöcke:

 ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select

ActiveChart.SetSourceData Source:=Range( _
"'Raw Data'!$A$1:$A$6000,'Raw Data'!$H$1:$O$6000" _
)
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).MinimumScale = 0
ActiveChart.Axes(xlCategory).MaximumScale = 6000
ActiveChart.Axes(xlValue).MinimumScale = 0
ActiveChart.Axes(xlValue).MaximumScale = 0.5
ActiveChart.SetElement (msoElementLegendBottom)



ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
ActiveChart.SetSourceData Source:=Range( _
"'Raw Data'!$A$6001:$A$12000,'Raw Data'!$H$6001:$O$12000" _
)
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).MinimumScale = 6000
ActiveChart.Axes(xlCategory).MaximumScale = 12000
ActiveChart.Axes(xlValue).MinimumScale = 0
ActiveChart.Axes(xlValue).MaximumScale = 0.5
ActiveChart.SetElement (msoElementLegendBottom)
ActiveChart.FullSeriesCollection(1).Name = _
"='Raw Data'!$H$1"
ActiveChart.FullSeriesCollection(2).Name = _
"='Raw Data'!$I$1"
ActiveChart.FullSeriesCollection(3).Name = _
"='Raw Data'!$J$1"
ActiveChart.FullSeriesCollection(4).Name = _
"='Raw Data'!$K$1"
ActiveChart.FullSeriesCollection(5).Name = _
"='Raw Data'!$L$1"
ActiveChart.FullSeriesCollection(6).Name = _
"='Raw Data'!$M$1"
ActiveChart.FullSeriesCollection(7).Name = _
"='Raw Data'!$N$1"
ActiveChart.FullSeriesCollection(8).Name = _
"='Raw Data'!$O$1"

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Datensätze blockweise in einzelne Diagramme
01.08.2023 18:20:29
daniel
Hi
Charts mit VBA ist kompliziert.
ich würde hier den VBA-Anteil so weit wie möglich reduzieren, und ich würde auch nicht für jeden Bereich ein Diagramm erstellen
gehe so vor:

1. lege dir eine Kopie der Originaltabelle an, aber nur mit den 6000 Zeilen
2. in dieser Kopie liest du für jede Zelle die Zeile aus der Originaltabelle mit einer Formel nach diesem Schema:
=Index(Originaltabelle!A:A;Zeile()+$Z$1)
in die Zelle Z1 schreibst du immer den Startwert, ab dem die Werte gelesen werden sollen, also 0, 6000, 12000 usw.
3. Erstelle dann das Chart für diese Tabelle mit den 6000 Zeilen.

das Makro muss dann nur noch diese 3 Dinge machen:
1. die Startzeile in die Zelle schreiben
2. ggf die Achenwerte anpassen
3. Das jeweilige Diagramm sichern. Hierzu gibt es die Funktion .Export, mit der du das Chart als Grafikdatei speichern kannst (GIF)
oder du erstellst das Chart als eigenes Blatt, dann kannst du es mit SpeichernUnter als PDF speichern
dann hast du die einzelnen Charts als Grafikdatei und kannst sie so weiterverwenden.

der notwendige Code würde dann im Prinzip so aussehen (bitte nicht kopieren, ist ungeprüft).

for i = 0 To 360000 Step 6000

Sheets(...).Range("Z1").Value = i
ActiveChart.Axes(xlCategory).MinimumScale = i
ActiveChart.Axes(xlCategory).MaximumScale = i + 6000
ActiveChart.Export FileName:="DeinName " & Format(i, "000000") & ".gif", FilterName:="GIF"
next

mehr braucht es nicht.
ich weiß ja nicht was du mit den Charts machen willst, aber 60 verschiedene Charts scheinen mir nicht sinnvoll.
so ist es einfacher und du kannst alles, was du am Chart ändern willst, von hand ändern und musst nichts programmieren.

Gruß Daniel
Anzeige
AW: Datensätze blockweise in einzelne Diagramme
01.08.2023 17:32:26
onur
Das ist, meiner Meinung nach, Quatsch, Willst du echt nachher 60 Diagramme auf dem Blatt haben? Wie willst du da das richtige finden?
Wieso machst du nicht ein Diagramm mit ALLEN Daten und filterst (zu Fuss oder VBA) blockweise?
Datensätze blockweise in einzelne Diagramme
02.08.2023 09:12:35
Andi K.
Stimmt....du hast natürlich recht....60 nicht 120.

Ja ich möchte hinterher tatsächlich 60 einzelne Diagramme haben die ich mir anschauen kann.

Die Idee mit dem Export der einzelnen Diagrammen in Bilddateien gefällt mir gut.
Bei den Daten handelt es sich um Stromwerte die nachher einen Rechteckpuls ergeben.
So könnte ich mir in einer Slideshow die 60 Bilder anschauen um zu sehen ob ein Puls ausfällt oder sonst irgendwie auffällig ist...!

Ich werde mal versuchen deine Idee umzusetzen......mal schauen ob ich das hinbekomme.........
Anzeige
AW: Datensätze blockweise in einzelne Diagramme
01.08.2023 17:18:19
onur
"das ganze jetzt aber insgesamt 120 mal hintereinander zu schreiben" - Du meinst wohl 60 mal.

289 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige