Введите следующий код VBA в качестве модуля:
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
Как это устроено:
- Выберите диапазон данных
A23:C27
. - Запустить макрос.
Замечания:
- Col Index - вспомогательная колонка, вы можете изменить
Colors
. - Тип и размер диаграммы доступны для редактирования.
- Настройте ссылки на ячейки, как вам нужно.