Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Diagramme Legende abhängig von Wert anzeigen

Diagramme Legende abhängig von Wert anzeigen
11.09.2017 08:13:04
Wert
Servus zusammen,
ich habe mal eine Frage zu Diagrammen und ihren Legenden.
Ist es möglich, eine Legende nur mit Werten zu befüllen, deren Wert im Diagramm z.B. größer als 2 ist?
Ich habe das mal in folgender Beispielmappe dargestellt.
https://www.herber.de/bbs/user/116146.xlsx
Im Beispiel lasse ich mir im Diagramm nur die Werte von Juni bis August anzeigen.
Ich möchte jedoch nicht die volle Legende angezeigt bekommen, sondern immer nur die Legendeneinträge, deren Tabellenwert im ausgewählten Zeitraum mindestens 1 mal größer oder gleich 3 ist. Ich habe den Wertebereich mal grün markiert, dessen Legende ich angezeigt werden sollen. Die roten fliegen raus.
Wichtig ist, dass sich die Legende selbst aktualisiert, wenn ich einen anderen Datenbereich angezeigt haben möchte. Also wenn ich z.B. Jan-März anzeigen lasse, dass nur die Legendeneinträge von Bauteil 1 und Bauteil 6 verschwinden würden.
Ist das möglich?
Danke für eure Unterstützung!
Grüße, Bernd
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Diagramme Legende abhängig von Wert anzeigen
11.09.2017 09:07:11
Wert
Hi Bernd,
eventuell könnte man versuchen, es mit VBA lösen, indem der betreffende Legendeneintrg gelöscht wird.


AW: Diagramme Legende abhängig von Wert anzeigen
11.09.2017 09:40:45
Wert
Hi Karin,
danke für deinen Vorschlag. Ich habe gerade versucht die Vorgehensweise mit dem Recorder aufzuzeichnen:

Sub Legende_löschen()
' Legende_löschen Makro
Sheets("Auswertung_Bauteile_Monat").Select
ActiveChart.ChartArea.Select
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(8).Select
Selection.Delete
ActiveChart.ChartArea.Select
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(10).Select
Selection.Delete
ActiveChart.ChartArea.Select
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(16).Select
Selection.Delete
End Sub

Leider werden nur die Legenden-Indizes aufgezeichnet. Diese könnten sich jedoch ständig ändern.
Ich habe schon versucht von Index auf Name umzustellen, bekomme aber einen "Laufzeitfehler 13 Typen unverträglich".

ActiveChart.Legend.LegendEntries("Bauteil 1").Delete
Hast du einen Tipp für mich? Und wie könnte ich die zutreffenden Bauteile identifizieren?
Danke und Grüße, Bernd
Anzeige
AW: Diagramme Legende abhängig von Wert anzeigen
11.09.2017 11:18:17
Wert
Hi Bernd,
du müsstest als erstes mal tatsächlich genau vorgeben, in welchem Fall die Legendeneinträge ausgeblendet werden sollen - aus deinem vorhergehenden Beitrag schreibst du: "immer nur die Legendeneinträge, deren Tabellenwert im ausgewählten Zeitraum mindestens 1 mal größer oder gleich 3 ist. Ich habe den Wertebereich mal grün markiert, dessen Legende ich angezeigt werden sollen. Die roten fliegen raus."
In deiner hochgeladenen Mappe kann ich nicht erkennen, dass diese Bedingung erfüllt wäre - auch die grün markierten liegen IMMER unter 3, folglich dürften gar keine Legendeneinträge angezeigt werden.
Hier mal mein Vorschlag, wenn die Summe der angezeigten Monate nicht kleiner als 2 sein darf (deine Bedingung musst du im Code entsprechend anpassen):
Sub Legeneneintrag()
Dim lngReihe As Long
Dim arrWErte
Dim lngZaehler As Long
lngZaehler = 1
With ActiveSheet.ChartObjects(1).Chart
.Legend.Delete
.HasLegend = True
.Legend.Position = xlBottom
For lngReihe = 1 To .SeriesCollection.Count
arrWErte = .SeriesCollection(lngReihe).Values
If Application.Sum(arrWErte) 



Anzeige
AW: Diagramme Legende abhängig von Wert anzeigen
11.09.2017 16:19:33
Wert
Hi Karin,
Danke für deine Unterstützung und deine Geduld. Ich hab deinen Code eingesetzt und es funktioniert mit leichten Anpassungen wie ich mir das vorgestellt habe. Vielen vielen Dank dafür.
Was deine Kritik bzgl. der Werte betrifft hast du auch vollkommen recht. Die Werte hab ich mir per Zufallszahl generiert und die ändern sich ja bei jeder Neuberechnung. Mea Culpa, das hatte ich beim Upload nicht bedacht.
Fazit: Funktioniert, den Rest kann ich selbst anpassen.
Grüße, Bernd
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Diagramme Legende abhängig von Wert anzeigen


Schritt-für-Schritt-Anleitung

Um die Excel-Diagrammlegende nur mit Werten anzuzeigen, die einen bestimmten Schwellenwert überschreiten, kannst Du VBA verwenden. Folge diesen Schritten:

  1. Öffne Deine Excel-Datei mit dem Diagramm, dessen Legende Du anpassen möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (DeinWorkbookName)" > Einfügen > Modul.
  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub LegendeAnpassen()
       Dim lngReihe As Long
       Dim arrWErte
       Dim lngZaehler As Long
       lngZaehler = 1
       With ActiveSheet.ChartObjects(1).Chart
           .Legend.Delete
           .HasLegend = True
           .Legend.Position = xlBottom
           For lngReihe = 1 To .SeriesCollection.Count
               arrWErte = .SeriesCollection(lngReihe).Values
               If Application.Sum(arrWErte) >= 3 Then
                   .SeriesCollection(lngReihe).Name = "Bauteil " & lngReihe
               Else
                   .SeriesCollection(lngReihe).Delete
               End If
           Next lngReihe
       End With
    End Sub
  5. Passe die Bedingung im Code an, falls Du eine andere Schwelle verwenden möchtest.

  6. Schließe den VBA-Editor und führe das Makro aus, indem Du ALT + F8 drückst und das Makro "LegendeAnpassen" auswählst.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 13: Typen unverträglich"

    • Dieser Fehler tritt auf, wenn Du versuchst, einen nicht existierenden Legenden-Eintrag zu löschen. Stelle sicher, dass der Name des Bauteils korrekt geschrieben ist.
  • Problem: Legende wird nicht aktualisiert

    • Achte darauf, dass die Bedingungen im Code korrekt sind. Überprüfe den Wertebereich, um sicherzustellen, dass die Legende basierend auf den richtigen Werten angezeigt wird.

Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du die Legende manuell anpassen:

  1. Klicke mit der rechten Maustaste auf die Legende und wähle "Diagrammtyp ändern".
  2. Wähle "Legende" und passe die Sichtbarkeit der Einträge an, indem Du sie manuell bearbeitest.
  3. Diese Methode eignet sich jedoch nur für statische Daten.

Praktische Beispiele

Angenommen, Du hast ein Diagramm mit den folgenden Bauteilen und Werten:

Bauteil Januar Februar März
Bauteil 1 1 2 4
Bauteil 2 3 3 2
Bauteil 3 0 1 5

Wenn Du die Legende so einstellen möchtest, dass nur Bauteil 1 und Bauteil 3 angezeigt werden, kannst Du das oben genannte Makro verwenden. Nach Ausführung des Makros wird nur Bauteil 1 und Bauteil 3 in der Legende angezeigt, da die Werte von Bauteil 2 nicht den Schwellenwert erfüllen.


Tipps für Profis

  • Nutze Debug.Print im VBA-Code, um Variablenwerte während der Ausführung zu überprüfen. Das hilft Dir, Probleme schneller zu identifizieren.
  • Überlege, die Legende in andere Positionen zu verschieben, um die Übersichtlichkeit zu erhöhen. Du kannst die Excel-Diagrammlegende verschieben, indem Du einfach darauf klickst und ziehst.

FAQ: Häufige Fragen

1. Wie kann ich die Legende in ein anderes Format bringen?
Du kannst die Legende anpassen, indem Du mit der rechten Maustaste darauf klickst und "Formatieren" auswählst. Dort hast Du verschiedene Optionen zur Anpassung der Schriftart und -größe.

2. Gibt es ein anderes Wort für Legende?
Ein häufig verwendetes anderes Wort für Legende ist "Legendenbeschreibung".

3. Wie kann ich die Legende in Excel 2016 anzeigen?
Um die Excel-Diagrammlegende anzuzeigen, klicke auf das Diagramm, gehe zur Registerkarte "Diagrammtools" und aktiviere die Legende unter "Diagramm-Layout".

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige