Форматирование цветов диаграммы на основе значений серий

386
PeterH

Можно ли отформатировать цвета гистограммы одной серией на основе их значений, то есть все, что больше 50, будет зеленым, а что-нибудь ниже будет красным?

То, что я сейчас должен сделать, это обходной путь:

У меня есть данные для оригинальной серии, а затем я создаю 2 подмножества. Один для красного, один для зеленого, и используйте оператор if, чтобы пройти только значения выше 50 для зеленого ряда и ниже 50 для красного ряда, затем вычерчивайте оба ряда, очевидно, где один имеет пробелы, а другой нет.

Но это раздражает, я бы предпочел простой способ установить условный формат для самой серии.

Это возможно?

2

1 ответ на вопрос

0
Rajesh S

enter image description here

Введите следующий код 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.
  • Тип и размер диаграммы доступны для редактирования.
  • Настройте ссылки на ячейки, как вам нужно.

Похожие вопросы