使用基于类别标签的VBA更改条形颜色

我有一个Excel中的VBA代码来改变条形图的颜色,但它不适用于类别系列。

ActiveChart.SeriesCollection(1).Interior.Color = RGB(0, 153, 64) 

我想改变一个单一的酒吧的颜色。 但是,上面的代码更改所有酒吧的颜色。

对于所有酒吧,我想要一个颜色(绿色),除了代表两个数据点(平均1和平均2)的两个酒吧; 这些应该是不同的颜色。 任何人都可以请告诉我如何使用VBA?

杰西的回答往往是最干净的方式。

然而,“有不同颜色的酒吧,他们必须在不同的系列”(我的重点)是不准确的。 您可以在一个系列中混合搭配颜色。 例如,这使得第一个系列的第二个条形成红色:

 ActiveChart.SeriesCollection(1).Points(2).Interior.Color = RGB(255, 0, 0) 

你可以使用这个来做各种巧妙的技巧,比如突出显示超过某个阈值的条形图,与闰年有关,或者其他。 您当然可以select以这种方式突出显示您的average1和average2值。


如果要改变具有给定特征的点的颜色,则必须遍历所有点直到find具有该特征的点。 例如,如果你想用红色来表示类别( XValue )是"avg"的点,那么你可以这样做:

 Dim c As Chart Dim s As Series Dim iPoint As Long Dim nPoint As Long Set c = ActiveChart Set s = c.SeriesCollection(1) nPoint = s.Points.Count For iPoint = 1 To nPoint If s.XValues(iPoint) = "avg" Then s.Points(iPoint).Interior.Color = RGB(255, 0, 0) End If Next iPoint 

你的问题不在于VBA,要有不同的彩条,他们必须在不同的系列。

在基本颜色的系列中留下空隙,并在第二个系列上添加您想要着色的值,然后着色。 你的数据看起来像这样:

 Series | Month 1 | Month 2 | Month 3 | Month 4 | Month 5 | Month 6 | Month 7 1 10 12 15 14 10 2 17 3 18