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.