Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1220to1224
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
Variable Darstellung von X-Y Diagrammen
X-Y
Hallo zusammen,
Ich habe folgendes Problem:
Ich habe circa 50 Datenreihen, die jeweils aus circa 7000 x und y Werten bestehen.
Diese kann ich sehr gut in einem X-Y Diagramm mit Excel darstellen. Allerdings wird es bei vielen Kurven etwas unübersichtlich und auf Dauer ist es nervig immer neue Datenreihen manuell rein zu kopieren bzw zu löschen.
Gibt es die Möglichkeit ein Diagramm mit Checkbox zu erstellen, in der ich auswählen kann welche Datenreihen angezeigt werden sollen?
Mit Pivot Charts ist es meiner Meinung nach nicht möglich, da in Pivot Charts keine X-Y Diagramme zugelassen sind.
AW: Variable Darstellung von X-Y Diagrammen
27.07.2011 13:07:03
X-Y
Hi Dominik,
blende die Spalten mit den Datenreihen, die nicht angezeigt werden sollen, im Tabellenblatt aus.
Bis später,
Karin
AW: Variable Darstellung von X-Y Diagrammen
27.07.2011 16:33:52
X-Y
Hallo
Vielen Dank für den Hinweis!
Ganz löst es mein Problem noch nicht. Ich möchte ja die manuelle Sucherei mir ersparen.
Ich hätte gerne eine Checkbox mit der ich dann die verschiedenen Datenreihen nur noch anklicken muss.
Ich denke mit dem Hinweis von Karin sollte das über ein Makro lösbar sein:
Das Makro würde dann einfach nur aus einer großen Checkbox mit 50 Einträgen bestehen. Beim Anklicken der Checkbox würden dann bestimmte Spalten eingeblendet. Bei nochmaligem Klick auf die Checkbox würden die Spalten wieder ausgeblend.
Beispiel:
Klick auf Checkbox A = Einblendung Spalte G-J // Nochmaliger Klick = Ausblendung Spalte G-J
Klick auf Checkbox B = Einblendung Spalte K-L // Nochmaliger Klick = Ausblendung Spalte K-L
USW...
Hat jemand eine Idee für so ein Makro?
Viele Dank,
Dominik
Anzeige
AW: Variable Darstellung von X-Y Diagrammen
27.07.2011 18:10:30
X-Y
Hi Dominik,
verwendest du ein eingebettetes Diagrammobjekt oder ein Diagrammblatt?
Was verstehst du unter "große Checkbox mit 50 Einträgen"?
Bis später,
Karin
AW: Variable Darstellung von X-Y Diagrammen
27.07.2011 18:39:55
X-Y
Hallo Karin,
Ich verwende ein Diagrammblatt. Glaube ich zumindest. Bedeutet das, dass es ein extra Blatt für das Diagramm gibt? Und eingebettet würde dann bedeuten dass das Diagramm auf einem Tabellenblatt sich befindet?
Die große Checkbox mit 50 Einträgen, beudeutet in meinem Fall, dass für jede Datenreihe (welche wiederum jeweils aus X und Y- Werten besteht) eine Checkbox existieren soll.
Da ich circa 50 Datenreihen habe, müsste die Checkbox dann 50 Einträge haben.
Falls die Checkbox nur 20 Einträge hat würde mir das auch schon weiterhelfen ;)
Vielen Dank,
Dominik
Anzeige
AW: Variable Darstellung von X-Y Diagrammen
27.07.2011 19:15:04
X-Y
Hi Dominik,
du meinst wohl ein UserForm mit 50 Checkboxen, denn 50 CheckBoxen lassen sich auf einem Diagrammblatt schlecht unterbringen.
Da müsstest du schon mal deine Arbeitsmappe hochladen, damit man sich den Tabellenaufbau anschauen kann, denn davon hängt ab, wie der Code aussehen muss.
Bis später,
Karin
AW: Variable Darstellung von X-Y Diagrammen
27.07.2011 21:15:54
X-Y
Hallo Karin,
Du hast Recht. Ich meine eine UserForm mit mehreren Checkboxen. Ob es jetzt 50 oder 20 sind, ist mir im ersten Schritt egal.
Das Excel File hochladen ist eher unpraktisch, da es schon jetzt (wo nur ein Teil der Daten eingetragen sind) 20 MB groß ist.
Die Tabellenstruktur ist aber denkbar einfach:
Es sind sehr lange Datenreihen mit extrem vielen Datenpunkten (6000-8000), die alle sich alle in Spalten nebeneinander befinden.
Also ungefähr so:
Spalte E: E10-E6556 X-Wert Datenreihe 1
Spalte F: F10-F6556 Y-Wert Datenreihe 1
Spalte J: J35-J7954 X-Wert Datenreihe 2
Spalte K: K35-K7954 Y-Wert Datenreihe 2
usw....
Im jetzigen Stadium habe ich ein Diagrammblatt erstellt. In diesem Diagrammblatt sind alle Datenreihen eingetragen.
Dein Tip funktioniert hier:
Sobald ich die Spalten einer Datenreihe ausblende verschwinden diese.
Jetzt wäre es nur noch schön sowas automatisiert, beispielsweise über Checkboxen zu realisieren. Damit ich schnell und unkompliziert verschiedenste Datenreihen miteinander vergleichen kann.
Nochmals Vielen Dank,
Dominik
Anzeige
AW: Variable Darstellung von X-Y Diagrammen
27.07.2011 21:17:40
X-Y
Hallo Karin,
Du hast Recht. Ich meine eine UserForm mit mehreren Checkboxen. Ob es jetzt 50 oder 20 sind, ist mir im ersten Schritt egal.
Das Excel File hochladen ist eher unpraktisch, da es schon jetzt (wo nur ein Teil der Daten eingetragen sind) 20 MB groß ist.
Die Tabellenstruktur ist aber denkbar einfach:
Es sind sehr lange Datenreihen mit extrem vielen Datenpunkten (6000-8000), die alle sich alle in Spalten nebeneinander befinden.
Also ungefähr so:
Spalte E: E10-E6556 X-Wert Datenreihe 1
Spalte F: F10-F6556 Y-Wert Datenreihe 1
Spalte J: J35-J7954 X-Wert Datenreihe 2
Spalte K: K35-K7954 Y-Wert Datenreihe 2
usw....
Im jetzigen Stadium habe ich ein Diagrammblatt erstellt. In diesem Diagrammblatt sind alle Datenreihen eingetragen.
Dein Tip funktioniert hier:
Sobald ich die Spalten einer Datenreihe ausblende verschwinden diese.
Jetzt wäre es nur noch schön sowas automatisiert, beispielsweise über Checkboxen zu realisieren. Damit ich schnell und unkompliziert verschiedenste Datenreihen miteinander vergleichen kann.
Nochmals Vielen Dank,
Dominik
Anzeige
AW: Variable Darstellung von X-Y Diagrammen
27.07.2011 22:44:32
X-Y
Hi Dominik,
du musst ja nicht unbedingt die 20 MB große Mappe mit 6000 Datenpunkten je Datenreihe hochladen - da würden schon 20 Datenpunte je Reihe ausreichen, um den genauen Aufbau zu erkennen. Es nützt jedoch ganz und gar nichts, wenn ich mir mit "usw...." irgend etwas ausdenken soll, was nicht den Originalbedingungen entspricht.
Bis später,
Karin
AW: Variable Darstellung von X-Y Diagrammen
28.07.2011 11:15:06
X-Y
Hallo Karin,
Mir geht es erst einmal darum zu verstehen wie der Code ungefähr aussehen müsste.
Hier ist mal eine Beispielmappe mit nur wenigen Datenpunkten je Datenreihe. Die Zahl der Datenreihen beträgt in dem Beispielfall nur 10.
Der Weg mit der Ausblendung funktioniert hier prinzipiel schon. Ich bräuchte also nur ein Makro welches mir bestimmte Spalten per Checkbox aus und wieder einblendet. Hier ist die Beispielmappe:
https://www.herber.de/bbs/user/75915.xlsx
Vielen Dank
Dominik
Anzeige
AW: Variable Darstellung von X-Y Diagrammen
28.07.2011 16:06:29
X-Y
Hi Dominik,
im Anhang die Mappe mit "...nur dem Makro, welches bestimmte Spalten aus und wieder einblendet".
Auf dem Diagramm befindet sich ein Schalter, mit dem du das UserForm starten kannst.
Bis später,
Karin
https://www.herber.de/bbs/user/75921.xlsm
AW: Variable Darstellung von X-Y Diagrammen
28.07.2011 19:59:50
X-Y
Hallo Karin,
Vielen Dank! Das ist schon mal sehr hilfreich. Das einzige was mich noch daran stört ist, dass die Diagramme eingeblendet sind wenn die Checkbox NICHT ausgewählt sind und eingeblendet sind wenn die Checkbox ausgewählt ist.
Ich hätte es genau umgekehrt. Da ich deinen Code nicht ganz verstanden habe, habe ich es auf die schnelle nicht geschafft das anzupassen. Kannst du das noch schnell anpassen?
Witzigerweise habe ich selbst jetzt auch schon eine Lösung gefunden, die aber nicht so elegant ist wie deine:)
Und zwar habe ich es versucht über eine Userform bei der dann jede Checkbox folgendermaßen programmiert wird:
Private Sub CheckBox6_Change()
If CheckBox6 = True Then
Sheets("Tabelle2").Columns("D:G").EntireColumn.Hidden = True
Else
Sheets("Tabelle2").Columns("D:G").EntireColumn.Hidden = False
End If
End Sub
Klappt auch ganz gut. Ist aber bei vielen Datenreihen ein größerer Aufwand.
Viele Dank und Viele Grüße,
Dominik
Anzeige
AW: Variable Darstellung von X-Y Diagrammen
28.07.2011 21:38:27
X-Y
Hi Dominik,
ergänze um UserForm_Initialize Ereignis meines Codes in der "With clSchalter"-Anweisung die folgende Zeile
         .Value = True

Dadurch werden die CheckBoxen von Beginn aktivert.
Dein Code hat nicht nur den Nachteil, dass du für jede CkeckBox einen eigenen Code schreiben musst, sondern die Anzahl an CheckBoxen ist fix und du musst für jede zusätzliche Datenreihe eine weitere CheckBox mit Code ergänzen. Bei meinem Code werden automatisch genau so viele ChackBoxen erstellt, wie das Diagramm Datenreihen hat.
Bis später,
Karin
Anzeige
AW: Variable Darstellung von X-Y Diagrammen
29.07.2011 10:21:14
X-Y
Hallo Karin,
Vielen Dank für die Unterstützung. Das Makro funktioniert sehr gut.
Das mit den Checkboxen ist jetzt auch richtig. Was mich stört ist nur, dass am Anfang alle ausgewählt sind. Ich hätte gern ein leeres Diagramm am Anfang bei dem ich dann durch Anklicken verschiedene Datenreihen einblenden kann.
Eine Uncheck-All Box würde das Problem auch lösen.
Ich würde gerne den Code verstehen, damit ich selbst Anpassungen vornehmen kann. Beispielsweise würde ich später evtl gerne die Checkboxen nebeneinander darstellen. Also zum Beispiel 15 links und 15 rechts. Und nicht alle untereinander.
Kannst du kurz erklären, was die Befehle innerhalb der "With clSchalter"-Anweisung tun?
Vielen Dank,
Dominik
Anzeige
AW: Variable Darstellung von X-Y Diagrammen
29.07.2011 10:46:57
X-Y
Hallo Karin,
Das mit der Darstellung in 2 Reihen habe ich jetzt schon selbst hinbekommen:
Die angepasste With clSchalter Anweisung habe ich unten reinkopiert.
Das Problem mit dem Uncheck-All konnte ich noch nicht lösen.
Viele Grüße,
Dominik
Private Sub UserForm_Initialize()
Dim intReihe As Integer
Dim Zeilenzahl As Integer
Dim chrDia As Chart
Dim strSpalte1 As String
Dim strSpalte2 As String
Set chrDia = Charts("Diagramm")
ReDim arrBox(1 To chrDia.SeriesCollection.Count)
For intReihe = 1 To chrDia.SeriesCollection.Count
strSpalte1 = Range(Split(chrDia.SeriesCollection(intReihe).Formula, ",")(2)).Cells(1). _
Address(True, False)
strSpalte1 = Left(strSpalte1, InStr(strSpalte1, "$") - 1)
strSpalte2 = Range(Split(chrDia.SeriesCollection(intReihe).Formula, ",")(1)).Cells(1). _
Address(True, False)
strSpalte2 = Left(strSpalte2, InStr(strSpalte2, "$") - 1)
Set clSchalter = Me.Controls.Add("Forms.CheckBox.1", "Box" & intReihe, True)
With clSchalter
.Value = True
.Tag = strSpalte1 & ":" & strSpalte2
.Caption = Range(Application.Substitute(Split(Split(chrDia.SeriesCollection(intReihe). _
Formula, ",")(0), "(")(1), """", "")).Value
.Top = intReihe * 20
.Height = 15
Zeilenzahl = 10
If .Top > Zeilenzahl * 20 Then
.Top = (intReihe - Zeilenzahl) * 20
.Left = 100
Else
.Left = 25
End If
.Width = 180
End With
Set arrBox(intReihe).clBox = clSchalter
Next intReihe
End Sub

Anzeige
AW: Variable Darstellung von X-Y Diagrammen
29.07.2011 11:05:38
X-Y
Hi Dominik,
lösche im mdlAllgemein die Zeile
   Worksheets("Tabelle4").Columns.Hidden = False

und ändere den Code im Codemodul des UserForms
Private Sub UserForm_Initialize()
Dim intReihe As Integer
Dim intZaehler As Integer
Dim arrSpalten()
Dim chrDia As Chart
Dim strSpalte1 As String
Dim strSpalte2 As String
Set chrDia = Charts("Diagramm")
ReDim arrBox(1 To chrDia.SeriesCollection.Count)
For intReihe = 1 To chrDia.SeriesCollection.Count
strSpalte1 = Range(Split(chrDia.SeriesCollection(intReihe).Formula, ",")(2)).Cells(1). _
Address(True, False)
strSpalte1 = Left(strSpalte1, InStr(strSpalte1, "$") - 1)
strSpalte2 = Range(Split(chrDia.SeriesCollection(intReihe).Formula, ",")(1)).Cells(1). _
Address(True, False)
strSpalte2 = Left(strSpalte2, InStr(strSpalte2, "$") - 1)
Set clSchalter = Me.Controls.Add("Forms.CheckBox.1", "Box" & intReihe, True)
With clSchalter
.Tag = strSpalte1 & ":" & strSpalte2
.Caption = Range(Application.Substitute(Split(Split(chrDia.SeriesCollection(intReihe). _
Formula, ",")(0), "(")(1), """", "")).Value
.Top = intReihe * 20
.Height = 15
.Left = 25
.Width = 180
.Value = True
ReDim Preserve arrSpalten(0 To intZaehler)
arrSpalten(intZaehler) = .Tag
intZaehler = intZaehler + 1
End With
Set arrBox(intReihe).clBox = clSchalter
Next intReihe
For intReihe = 0 To UBound(arrSpalten())
Worksheets("Tabelle4").Columns(arrSpalten(intReihe)).Hidden = True
Next intReihe
End Sub

Innerhalb der With-Anweisung werden zuerst die beiden Spalten, auf denen die Datenreihe basiert, in die Tag-Eigenschaft der CheckBox geschrieben, damit sie dann im Klassenmodul abgerufen werden konnen. Dann wird die Aufschrift der CheckBox aus dem Namen der Datenreihe erstellt. Die Eigenschaften .Top, .Height, .Left, .Width geben die Position der Oberkante, die Höhe, die Position der linken Kante und die Breite der CheckBox an. Außerdem wird die .Value-Eigenschaft auf True - d.h. aktiviert - gesetzt.
Die restlichen 3 Zeilen sind dazu da, um die auszublendenden Spalten in ein Array zu schreiben, welches dann in der For intReihe Schleife benutzt wird, um im Tabellenblatt die betreffenden Spalten auszublenden, sodass ein leeres Diagramm angezeigt wird.
Bis später,
Karin
AW: Variable Darstellung von X-Y Diagrammen
29.07.2011 15:04:08
X-Y
Hallo Karin,
Vielen Dank für die Mühe, die du dir machst!
Leider funktioniert dein Code nicht ganz so wie gewünscht.
Zwar entfernt der Code alle Datenreihen, aber die Checkboxen sind, dann wieder ausgewählt. Sollte ja genau umgekehrt sein:
Ausgewählte Checkbox = Angezeigte Datenreihe
Nicht ausgewählte Checkbox = Nicht angezeigte Datenreihe
Außerdem Crasht das Makro wenn man es startet und alle Datenreihen entfernt dann beendet und nochmal startet.
Ich habe den Code von dir an meine Bedürfnisse angepasst und werde wohl jetzt in Kauf nehmen zu Beginn erstmal 40 Checkboxen auswählen zu müssen :)
Der akutelle Stand des Codes steht unten.
Vielen Dank nochmals für deine tolle Hilfe,
Dominik
Private Sub UserForm_Initialize()
Dim intReihe As Integer
Dim intZaehler As Integer
Dim arrSpalten()
Dim chrDia As Chart
Dim strSpalte1 As String
Dim strSpalte2 As String
Set chrDia = Charts("Diagramm")
ReDim arrBox(1 To chrDia.SeriesCollection.Count)
For intReihe = 1 To chrDia.SeriesCollection.Count
strSpalte1 = Range(Split(chrDia.SeriesCollection(intReihe).Formula, ",")(2)).Cells(1). _
Address(True, False)
strSpalte1 = Left(strSpalte1, InStr(strSpalte1, "$") - 1)
strSpalte2 = Range(Split(chrDia.SeriesCollection(intReihe).Formula, ",")(1)).Cells(1). _
Address(True, False)
strSpalte2 = Left(strSpalte2, InStr(strSpalte2, "$") - 1)
Set clSchalter = Me.Controls.Add("Forms.CheckBox.1", "Box" & intReihe, True)
With clSchalter
.Tag = strSpalte1 & ":" & strSpalte2
.Caption = Range(Application.Substitute(Split(Split(chrDia.SeriesCollection(intReihe).  _
_
Formula, ",")(0), "(")(1), """", "")).Value
.Top = intReihe * 20
.Height = 15
.Left = 25
.Width = 180
.Value = True
ReDim Preserve arrSpalten(0 To intZaehler)
arrSpalten(intZaehler) = .Tag
intZaehler = intZaehler + 1
End With
Set arrBox(intReihe).clBox = clSchalter
Next intReihe
For intReihe = 0 To UBound(arrSpalten())
Worksheets("Tabelle4").Columns(arrSpalten(intReihe)).Hidden = True
Next intReihe
End Sub

AW: Variable Darstellung von X-Y Diagrammen
29.07.2011 15:35:50
X-Y
Hi Dominik,
also irgendwie verstehe ich dich nicht - du wolltest doch, dass zu Beginn alle CheckBoxen ausgewählt sind, deshalb habe ich doch extra den Code durch die Zeile
.Value = True

ergänzt... Wenn das nun nicht so sein soll, dann lösche sie einfach wieder.
Bis später,
Karin
AW: Ergänzung
30.07.2011 17:24:00
Dominik
Klappt wie gewünscht!
Vielen Dank für die tolle Hilfe und Viele Grüße,
Dominik
AW: Variable Darstellung von X-Y Diagrammen
29.07.2011 16:16:06
X-Y
Hallo Karin,
Vielen Dank für die Mühe, die du dir machst!
Leider funktioniert dein Code nicht ganz so wie gewünscht.
Zwar entfernt der Code alle Datenreihen, aber die Checkboxen sind, dann wieder ausgewählt. Sollte ja genau umgekehrt sein:
Ausgewählte Checkbox = Angezeigte Datenreihe
Nicht ausgewählte Checkbox = Nicht angezeigte Datenreihe
Außerdem Crasht das Makro wenn man es startet und alle Datenreihen entfernt dann beendet und nochmal startet.
Ich habe den Code von dir an meine Bedürfnisse angepasst und werde wohl jetzt in Kauf nehmen zu Beginn erstmal 40 Checkboxen auswählen zu müssen :)
Der akutelle Stand des Codes steht unten.
Vielen Dank nochmals für deine tolle Hilfe,
Dominik
Private Sub UserForm_Initialize()
Dim intReihe As Integer
Dim intZaehler As Integer
Dim arrSpalten()
Dim chrDia As Chart
Dim strSpalte1 As String
Dim strSpalte2 As String
Set chrDia = Charts("Diagramm")
ReDim arrBox(1 To chrDia.SeriesCollection.Count)
For intReihe = 1 To chrDia.SeriesCollection.Count
strSpalte1 = Range(Split(chrDia.SeriesCollection(intReihe).Formula, ",")(2)).Cells(1). _
Address(True, False)
strSpalte1 = Left(strSpalte1, InStr(strSpalte1, "$") - 1)
strSpalte2 = Range(Split(chrDia.SeriesCollection(intReihe).Formula, ",")(1)).Cells(1). _
Address(True, False)
strSpalte2 = Left(strSpalte2, InStr(strSpalte2, "$") - 1)
Set clSchalter = Me.Controls.Add("Forms.CheckBox.1", "Box" & intReihe, True)
With clSchalter
.Tag = strSpalte1 & ":" & strSpalte2
.Caption = Range(Application.Substitute(Split(Split(chrDia.SeriesCollection(intReihe).  _
_
Formula, ",")(0), "(")(1), """", "")).Value
.Top = intReihe * 20
.Height = 15
.Left = 25
.Width = 180
.Value = True
ReDim Preserve arrSpalten(0 To intZaehler)
arrSpalten(intZaehler) = .Tag
intZaehler = intZaehler + 1
End With
Set arrBox(intReihe).clBox = clSchalter
Next intReihe
For intReihe = 0 To UBound(arrSpalten())
Worksheets("Tabelle4").Columns(arrSpalten(intReihe)).Hidden = True
Next intReihe
End Sub

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige