30.5k Aufrufe
Gefragt in Tabellenkalkulation von Mitglied (439 Punkte)
Hallo zusammen,

ich habe hier ein Excel-Diagramm (Diagrammtyp „Punkt xy“) mit 25 Datenreihen. Diese große Anzahl macht das Diagramm unübersichtlich. Deshalb möchte ich einige Datenreihen ausblenden. Welche ich genau ausblenden möchte, will ich immer individuell entscheiden.

Ich habe schon mehrere Möglichkeiten probiert, aber keine ist für mich zufriedenstellend.

1. Ich kann die entsprechende Spalte, in der die Werte eine Datenreihe stehen, ausblenden (Rechtsklick auf die Spalte => Ausblenden). Das möchte ich aber nicht, da das Diagramm auf einem eigenen Tabellenblatt liegt, und ich dann zum Ausblenden immer auf das Tabellenblatt mit den Daten umschalten muss.
2. Ich kann die Darstellung der jeweiligen Linie im Diagramm aufheben (Rechtsklick auf die Linie => Datenreihen formatieren => Linie „o Ohne“. Dann ist die Linie zwar unsichtbar, aber immer noch da. Wenn ich auf eine andere Linie zeige, die direkt neben der unsichtbaren liegt, dann erscheint die Quickinfo mit der Bezeichnung der unsichtbaren Linie.



Was ich also möchte, ist Folgendes:

Auf Mausklick (ggf. mit Makro, z.B. mit dem „Kontrollkästchen“) soll eine bestimmte Linie verschwinden. Dabei soll das Diagramm ständig angezeigt werden, so dass ich genau sehen kann, welche Linie gerade verschwunden ist. Das gleiche gilt natürlich fürs Wiedereinblenden der Linie.

Mit einem Makro in das Tabellenblatt mit den Daten zu springen, dort die entsprechende Spalte auszublenden und wieder zurückzuspringen, möchte ich nicht. Dabei wird das Diagramm kurzzeitig nicht angezeigt, so dass ich den Unterschied vor und nach dem Ausblenden nicht genau erkennen kann.


Hab ihr vielleicht eine Idee? Danke schon mal, wenn ihr mir helfen könnt!

Gruß, Heiko1985

8 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Heiko,

ich nehme an, du meinst, dass sich das Diagramm auf einem Diagrammblatt befindet? Oder ist es ein eingebettetes Diagrammobjekt in einem anderen Arbeitsblatt (in dem die Daten nicht stehen)?

Verwende Kontrollkästchen aus der Formular-Symbolleiste, denn diese lassen sich in ein Diagrammblatt einfügen im Gegensatz zu den CheckBoxen aus der Steuerelemente-Toolbox. Weise den Kontrollkästchen dann einen Code zu von dieser Art:
Sub Reihe1AusEin()
Worksheets("Tabelle1").Columns(1).EntireColumn.Hidden = Not Worksheets("Tabelle1").Columns(1).EntireColumn.Hidden
End Sub

Bis später,
Karin
0 Punkte
Beantwortet von Mitglied (439 Punkte)
Danke für Deine Antwort!
Im Prinzip klappt das sehr gut.

Allerdings nur im Prinzip. Meine Wertetabelle ist nämlich recht groß: 25 Spalten und 3.000 Zeilen. (Es handelt sich um Messwerte von Sensoren, die alle 10 Sekunden ein Signal liefern.)

Wenn ich nun das von Dir beschriebenen Makro ausführe, verschwindet das Diagramm kurz. Das gesamte Tabellenblatt wurde kurz weiß (Excel rechnet wohl gerade) und kommt dann wieder.

Das Ein- und Ausblenden der gewünschten Spalte klappt, aber durch diesen „weißen Blitz“ kann ich nicht sehen, welche Kurve jetzt ein- bzw. ausgeblendet wurde...


Gibt es dafür vielleicht eine Lösung?
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Heiko,

wenn du eine Legende eingeblendet hast, siehst ja dort, welche Datenreihe nicht mehr angezeigt wird, da sie auch in der Legende nicht mehr aufgeführt wird. Falls du keine Legende verwendest, wäre die einzige Möglichkeit, dass du dir unter- oder oberhalb der Kontrollkästchen ein "Legendensymbol" - farbig formatiertes Zeichnungselement - erstellst, sodass du immer einen Vergleich zur betreffenden Farbe der Datenreihe hast.

Bis später,
Karin
0 Punkte
Beantwortet von Mitglied (439 Punkte)
Nein, das meinte ich nicht. Die Legende hat mit meinem Problem nichts zu tun.

Folgendes:
Ich habe ja zwei Zustände: Zunächst habe ich ein Diagramm, in dem einige Kurven dargestellt sind. Wenn ich nun den von Dir beschriebenen Makro ausführe, verschwindet eine Kurve. Das ist auch gut so.

Mein Problem: Da die Datenreihen sehr umfangreich sind, färbt Excel, während es den Makro ausführt, das gesamte Diagrammblatt weiß (weil es wohl gerade am Rechnen ist). Anschließend erscheint das Diagramm dann wieder und die entsprechende Kurve wurde ausgeblendet.

Durch diese Weißfärbung „vergesse“ ich aber den alten Diagrammzustand. Heißt also: Ich kann nicht „instantly“ sehen, welche Kurve nun verschwunden ist.


Die Sache mit dem „weißen Blitz“ gilt auch generell: Will man den Unterschied zwischen zwei sehr ähnlichen Fotos herausfinden, so legt man sie einfach übereinander und schaltet zwischen den beiden Bildern hin und her. Dadurch kann man genau sehen, wo es „zuckt“, also wo eine Veränderung statt findet.
Schaltet man aber nicht direkt von Bild 1 auf Bild 2 um, sondern legt einen weißen Blitz dazwischen, vergisst das Gehirn kurzfristig das alte Bild, so dass ein Vergleich zwischen den beiden Bildern schwerer fällt.

Und genau so macht es Excel. Und so möchte ich es aber nicht…
Und genau dafür suche ich nach einer Lösung. Und vielleicht gibt es ja auch eine… :-)
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Heiko,

was du gemeint hast, war mir schon klar, nur leider gibt es keine Lösung, die das "Umschalten" des Diagramms in den neuen Zustand verbirgt. Mein Vorschlag bezog sich darauf, dass mithilfe der Legende bzw. der Zuordnung der Datenreihenfarbe zum betreffenden Kontrollkästchen dieses Manko etwas ausgeglichen wird und man zwar nicht den Verlauf der Linie, aber zumindest die Reihe selbst "gedanklich" zuordnen kann.

Eine Möglichkeit sehe ich noch, das man sich zum Vergleich sozusagen einen Sreenshot der vorhergehenden Diagrammansicht ins Diagramm holt:
Sub EinAus()
Dim inSpalte As Integer
With ActiveSheet.Shapes(Application.Caller)
Select Case ActiveSheet.Shapes(Application.Caller).DrawingObject.Index
Case 1
inSpalte = 1
Case 2
inSpalte = 2
Case 3
inSpalte = 3
Case 4
inSpalte = 4
Case 5
inSpalte = 5
End Select
End With
Application.ScreenUpdating = False
With ActiveChart
If .Pictures.Count > 0 Then .Pictures(1).Delete
.CopyPicture Appearance:=xlScreen, Format:=xlPicture
.Deselect
.Paste
.Pictures(1).Height = 50
.Pictures(1).Width = 120
.Pictures(1).Left = .ChartArea.Width - 120
.Deselect
End With
Worksheets("Tabelle1").Columns(inSpalte).EntireColumn.Hidden = Not Worksheets("Tabelle1").Columns(inSpalte).EntireColumn.Hidden
Application.ScreenUpdating = True
End Sub

Bis später,
Karin
0 Punkte
Beantwortet von Mitglied (439 Punkte)
Hm, das mit dem Screenshot wird wohl zu kompliziert. Meine Arbeitskollegen sollen das Diagramm ja auch bedienen können.

Der "weiße Blitz" ist zwar nervig, aber damit kann ich leben.
Vielen Dank also für Deine Hilfe!


Eine Frage habe ich allerdings noch:
Ich möchte mit dem von Dir beschriebenen Makro mehrere nebeneinander liegende Spalten auf einmal ausblenden.
Mit dem Code

Worksheets("Tabelle1").Columns("B:F").EntireColumn.Hidden = Not Worksheets("Tabelle1").Columns("B:F").EntireColumn.Hidden

klappt das aber nicht.

Wenn sich das Kontrollkästchen auf dem Tabellenblatt "Tabelle1" befindet, geht es. Aber vom Diagrammblatt aus leider nicht. Es kommt dann der Debugger.
Ich muss erst (mit einem Makro) in "Tabelle1" springen und danach wieder zurück. Dann geht es. Aber dann verlasse ich ja das Diagrammblatt. Und das möchte ich nicht, wie ganz zu Anfang schon gesagt...


Hast Du dafür vielleicht eine Lösung?
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Heiko,
Sub EinAus_MehrereSpalten()
With Worksheets("Tabelle1")
.Columns(2).EntireColumn.Hidden = Not .Columns(2).EntireColumn.Hidden
.Columns(3).EntireColumn.Hidden = Not .Columns(3).EntireColumn.Hidden
.Columns(4).EntireColumn.Hidden = Not .Columns(4).EntireColumn.Hidden
.Columns(5).EntireColumn.Hidden = Not .Columns(5).EntireColumn.Hidden
.Columns(6).EntireColumn.Hidden = Not .Columns(6).EntireColumn.Hidden
End With
End Sub

Bis später,
Karin
0 Punkte
Beantwortet von Mitglied (439 Punkte)
Nein, damit blende ich nicht mehrere Spalten auf einmal aus sondern mehrere Spalten nacheinachder.

Mein Problem ist, dass Excel bei jedem Ein- und Ausblenden ca. 1 bis 2 Sekunden benötigt, um das Diagramm wieder darzustellen. (Wegen der vielen Werte - 3.000 Zeilen, 25 Spalten).

Daher möchte ich alle Spalten auf einmal ausblenden, d.h. in einem einzigen Befehl.
...