Formatieren Sie Diagrammfarben basierend auf Serienwerten

470
PeterH

Ist es möglich, die Farben eines Balkendiagramms mit einer einzelnen Serie basierend auf ihren Werten zu formatieren, dh, wenn etwas über 50 grün ist, ist darunter etwas rot.

Was ich momentan tun muss, ist ein Workaround:

Ich habe meine Daten für die Originalserie und erstelle dann 2 Teilmengen. Eine für Rot, eine für Grün und eine if-Anweisung, um nur Werte über 50 für die grüne Serie und unter 50 für rote Serie durchzuziehen. Plotten Sie dann beide Serien, wobei offensichtlich der eine Lücken hat, der andere nicht.

Aber das ist ärgerlich, ich würde es sehr vorziehen, wenn ich ein einfaches Format für die eigentliche Serie selbst setzen möchte.

Ist das möglich?

2

1 Antwort auf die Frage

0
Rajesh S

Geben Sie folgenden VBA-Code als Modul ein:

Sub FormatChartbyColour()  Set rRng = Selection   ColorIndex1 = 3 ColorIndex2 = 4    ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=rRng ActiveChart.ChartType = xlColumnClustered ActiveChart.SetElement (msoElementChartTitleAboveChart)   ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(3).Name = "=""Colour 1""" ActiveChart.SeriesCollection(2).Name = "=""Colour 2"""   ActiveChart.SeriesCollection(3).Format.Fill.ForeColor.RGB = ThisWorkbook.Colors(ColorIndex1) ActiveChart.SeriesCollection(2).Format.Fill.ForeColor.RGB = ThisWorkbook.Colors(ColorIndex2)  With ActiveChart.Parent .Height = 250 .Width = 250 .Top = 100 .Left = 100 End With  ActiveChart.Axes(xlCategory).TickLabels.Font.Size = 10 ActiveChart.Axes(xlCategory).TickLabels.Font.Bold = False ActiveChart.Axes(xlCategory).TickLabels.Font.Italic = True ActiveChart.ChartTitle.Text = "Chaert Title (Colour1:Red, Colour2:Green)" ActiveChart.ChartTitle.Font.Size = 10   With ActiveChart vX = .SeriesCollection(1).XValues vY = .SeriesCollection(1).Values   For thisvY = 1 To UBound(vY) If vY(thisvY) = 1 Then .SeriesCollection(2).Points(thisvY).Interior.ColorIndex = ColorIndex1 If vY(thisvY) = 2 Then .SeriesCollection(2).Points(thisvY).Interior.ColorIndex = ColorIndex2  Next thisvY  End With   End Sub 

Wie es funktioniert:

  • Datenbereich auswählen A23:C27.
  • Führen Sie das Makro aus.

Hinweis:

  • Col Index ist Helfer-Spalte, die Sie ändern können Colors.
  • Diagrammtyp und -größe können bearbeitet werden.
  • Passen Sie die Zellreferenzen nach Bedarf an.