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

Forumthread: Untersch. Farbe in Diagramm je nach Wert

Untersch. Farbe in Diagramm je nach Wert
Tim
Hallo an alle,
ich habe eine Frage zu einem einfachen (Säulen-)Diagramm und hoffe, Ihr könnt mir weiterhelfen:
Gibt es hier eine Möglichkeit, dass die Säulen automatisch eine bestimmte Farbe erhalten, je nachdem, wie groß der zugrundeliegende Wert ist, ähnlich wie einer bedingten Formatierung im Bezug auf Zellen ?
Beispiel:
Ist der Wert einer Säule 50 oder kleiner, soll sie rot erscheinen, liegt er zwischen 50 und 100 orange etc.
Insgesamt gibt es 5 verschiedene Bereiche, in denen sich der Wert einer Säule bewegen kann.
Viele Grüße und vielen Dank Euch im Voraus für jeden Tipp,
Tim
Anzeige
AW: Untersch. Farbe in Diagramm je nach Wert
16.08.2012 21:04:41
Tim
Hallo,
ich habe im Netz folgenden Code gefunden.
Hier habe ich jedoch zwei Probleme:
1) Ich muss immer auf das Diagramm klicken bevor ich den Code laufen lasse.
2) Wenn der Code läuft, färbt er zwar die Diagrammbalken ein, allerdings mit völlig anderen Farben, als von mir in den Zellen A17:A21 vorgegeben.
VG und nochmals danke für jeden Tipp,
Tim
Anzeige
AW: Untersch. Farbe in Diagramm je nach Wert
16.08.2012 22:00:43
Beverly
Hi Tim,
schau dir mal das Beispiel Balkenfarbe Referenzabhängig auf meiner HP, Seite "Diagramme" an ( Link zur Vorschau ) - das bezieht sich zwar auf ein Balkendiagramm, ist aber bei einem Säulendiagramm genau so.


Anzeige
AW: Untersch. Farbe in Diagramm je nach Wert
16.08.2012 22:31:45
Tim
Hallo Karin,
vielen Dank für Deine Antwort !
Das ist glaube ich nicht ganz, wonach ich suche oder ich habe es falsch verstanden.
Ich kann hier leider nur die Vorschau, nicht aber den eigentlichen Link öffnen, das liegt wohl an den Sicherheitseinstellungen hier.
Ich suche nach einem Weg, dass die Säulen automatisch eine bestimmte Farbe erhalten, je nach dem, in welchem Bereich sich der entsprechende Wert gerade befindet (0-49 = rot, 50 bis 99 = orange, 100 bis 149 = grün, 150 bis 199 = blau, ab 200 = lila).
VG und nochmals danke,
Tim
Anzeige
AW: Untersch. Farbe in Diagramm je nach Wert
16.08.2012 22:42:52
Tim
Hallo,
hier noch ein kleiner Nachtrag:
Das Problem mit dem benötigten Anklicken des Diagramms habe ich gelöst.
Was mir jetzt nur noch fehlt, ist eine Möglichkeit, Farben exakt definieren zu können, da in meinem Code die Balken vollkommen anders eingefärbt werden, als ich in den entsprechenden Zellen vorgegeben habe.
VG,
Tim
Anzeige
AW: Untersch. Farbe in Diagramm je nach Wert
16.08.2012 22:55:05
Josef

Hallo Tim,
in Zeile x kannst du doch die Farben bestimmen.

« Gruß Sepp »

Anzeige
AW: Untersch. Farbe in Diagramm je nach Wert
16.08.2012 23:18:00
Tim
Hallo Sepp,
vielen Dank und sorry, ich hatte wohl vergessen, den Code zu posten - hier mein letzter Stand der Dinge:
Es funktioniert alles, nur, dass ich hier eben die Farben nicht genau festlegen kann.
Option Explicit
Sub ColorByValue()
Dim rPatterns As Range
Dim iPattern As Long
Dim vPatterns As Variant
Dim iPoint As Long
Dim vValues As Variant
Dim rValue As Range
Set rPatterns = ActiveSheet.Range("A17:A21")
vPatterns = rPatterns.Value
ActiveSheet.ChartObjects("Chart 2").Activate
With ActiveChart.SeriesCollection(1)
vValues = .Values
For iPoint = 1 To UBound(vValues)
For iPattern = 1 To UBound(vPatterns)
If vValues(iPoint) 
VG,
Tim
Anzeige
AW: Untersch. Farbe in Diagramm je nach Wert
16.08.2012 23:29:09
Josef

Hallo Tim,
Sub ColorByValue()
  Dim rPatterns As Range
  Dim iPattern As Long
  Dim iPoint As Long
  Dim vValues As Variant
  Dim rValue As Range
  
  With ActiveSheet
    Set rPatterns = .Range("A17:A21")
    
    With .ChartObjects("Chart 2").Chart.SeriesCollection(1)
      vValues = .Values
      For iPoint = 1 To UBound(vValues)
        For iPattern = 1 To rPatterns.Count
          If vValues(iPoint) <= rPatterns(iPattern, 1) Then
            .Points(iPoint).Format.Fill.ForeColor.RGB = rPatterns(iPattern, 1).Interior.Color
            Exit For
          End If
        Next
      Next
    End With
  End With
  
End Sub



« Gruß Sepp »

Anzeige
AW: Untersch. Farbe in Diagramm je nach Wert
16.08.2012 23:40:11
Tim
Hallo Sepp,
vielen vielen Dank dafür - das ist spitze !! :-)
Ich habe nur noch eine kleine Frage dazu:
Auf meinem Blatt sind insgesamt 5 Diagramme, für die alle das gleiche gelten soll.
Kann ich die hier irgendwie einbinden oder muss ich den Hauptteil des Codes fünf mal kopieren ?
VG und nochmals danke,
Tim
Anzeige
AW: Untersch. Farbe in Diagramm je nach Wert
16.08.2012 23:43:23
Josef

Hallo Tim,
wenn der Farbbereich für alle der selbe ist, dann so.
Sub ColorByValue()
  Dim objChrt As ChartObject
  Dim rPatterns As Range
  Dim iPattern As Long
  Dim iPoint As Long
  Dim vValues As Variant
  Dim rValue As Range
  
  With ActiveSheet
    Set rPatterns = .Range("A17:A21")
    For Each objChrt In .ChartObjects
      With objChrt.Chart.SeriesCollection(1)
        vValues = .Values
        For iPoint = 1 To UBound(vValues)
          For iPattern = 1 To rPatterns.Count
            If vValues(iPoint) <= rPatterns(iPattern, 1) Then
              .Points(iPoint).Format.Fill.ForeColor.RGB = rPatterns(iPattern, 1).Interior.Color
              Exit For
            End If
          Next
        Next
      End With
    Next
  End With
  
End Sub



« Gruß Sepp »

Anzeige
AW: Untersch. Farbe in Diagramm je nach Wert
16.08.2012 23:54:15
Tim
Hallo Sepp,
das klappt absolut super - vielen Dank nochmal für die tolle Hilfe !
VG und bis zum nächsten Mal, :)
Tim
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Untersch. Farbe in Diagramm je nach Wert anpassen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein Diagramm, das die Werte darstellt, die du farblich anpassen möchtest (z.B. ein Balkendiagramm).

  2. Definiere die Farbwerte in einem Bereich deiner Excel-Tabelle (z.B. in den Zellen A17:A21). Hier legst du die Farben fest, die du für bestimmte Werte verwenden möchtest.

  3. Öffne den VBA-Editor mit ALT + F11.

  4. Füge den folgenden VBA-Code in ein Modul ein:

    Sub ColorByValue()
        Dim rPatterns As Range
        Dim iPattern As Long
        Dim vPatterns As Variant
        Dim iPoint As Long
        Dim vValues As Variant
        Dim rValue As Range
    
        Set rPatterns = ActiveSheet.Range("A17:A21")
        vPatterns = rPatterns.Value
        ActiveSheet.ChartObjects("Chart 2").Activate
    
        With ActiveChart.SeriesCollection(1)
            vValues = .Values
            For iPoint = 1 To UBound(vValues)
                For iPattern = 1 To UBound(vPatterns)
                    If vValues(iPoint) <= rPatterns(iPattern, 1) Then
                        .Points(iPoint).Format.Fill.ForeColor.RGB = rPatterns(iPattern, 1).Interior.Color
                        Exit For
                    End If
                Next iPattern
            Next iPoint
        End With
    End Sub
  5. Passe den Namen des Diagramms in ActiveSheet.ChartObjects("Chart 2") an, falls dein Diagramm anders benannt ist.

  6. Führe den Code aus, um die Diagrammfarben entsprechend den definierten Werten zu ändern.


Häufige Fehler und Lösungen

  • Problem: Diagrammfarben ändern sich automatisch und entsprechen nicht den Zellen.

    • Lösung: Stelle sicher, dass die RGB-Werte in den Zellen korrekt definiert sind. Du kannst die Farben direkt in Excel anpassen, bevor du den Code ausführst.
  • Problem: Du musst das Diagramm anklicken, bevor der Code läuft.

    • Lösung: Füge den Code in ein Arbeitsblatt- oder Diagrammmodul ein, um das Anklicken zu umgehen.

Alternative Methoden

Eine Alternative ist die Verwendung von bedingten Formatierungen in Excel, um die Farben der Datenreihen direkt zu ändern. Diese Methode eignet sich jedoch nicht immer für Diagramme. Für Punkt- und Blasendiagramme ist es oft besser, den VBA-Code zu verwenden, um die Farben nach Wert anzupassen.


Praktische Beispiele

  • Beispiel für ein Balkendiagramm:

    • Werte in den Zellen B1:B10.
    • Farben in den Zellen A17:A21 (z.B. A17: Rot, A18: Orange, A19: Grün, A20: Blau, A21: Lila).
    • Der Code färbt die Balken basierend auf den Werten in der Spalte B.
  • Beispiel für ein Punktdiagramm:

    • Verwende den gleichen Code, um die Farben der Punkte nach ihren Werten anzupassen. Achte darauf, das Diagramm entsprechend zu benennen.

Tipps für Profis

  • Farben aus Tabelle übernehmen: Du kannst die Excel-Funktion Interior.Color verwenden, um Farben direkt aus einer Zelle zu übernehmen. Dies ermöglicht eine dynamische Anpassung der Diagrammfarben.

  • Diagrammtypen anpassen: Der Code kann leicht angepasst werden, um auch für andere Diagrammtypen wie Blasendiagramme oder Punktdiagramme zu funktionieren. Stelle sicher, dass du die Diagrammreferenzen entsprechend änderst.


FAQ: Häufige Fragen

1. Frage: Wie kann ich die Farben für mehrere Diagramme gleichzeitig ändern?
Antwort: Du kannst den Code anpassen, indem du eine Schleife für alle Diagramme im Arbeitsblatt einfügst. Verwende For Each objChrt In ActiveSheet.ChartObjects.

2. Frage: Funktioniert dieser Code in allen Excel-Versionen?
Antwort: Der VBA-Code sollte in den meisten modernen Excel-Versionen (ab Excel 2010) funktionieren. Achte darauf, dass Makros aktiviert sind.

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