Excel条形图 – 相同名称的相同颜色和图例条目

我想绘制一段时间内机器的状态。 例如,它可能会“运行”2小时,然后“停止”1小时,每个状态可能会出现几次。 使用堆积的条形图,我想显示状态和它停留在状态的时间量。 我发现,即使该状态已经发生,excel也会为每个新的状态实例分配一个新的颜色和图例条目。
如何让图表中的同名状态具有相同的颜色(例如,每次显示“正在运行”时,它具有相同的颜色和单个图例条目)? 谢谢

状态名称存储为系列名称。 图表中的每个堆栈都有一个系列。 可以遍历系列并根据系列名称进行devise。 也可以使用LegendEntries对象从Legend中移除条目。

将它们组合成一个循环,你可以更新系列的颜色,如果它匹配一个标题,然后从图例中删除该项目,如果它不是前两个系列之一。 这假设“运行”和“停止”在开始时是交替的,并且是保留在图例中的条目。 如果情况并非如此,则可以采取更多的逻辑来确定要保留的条目。

Sub style_chart() Dim cht As Chart Dim ser As Series 'uses the active chart... assume it is selected Set cht = ActiveChart With cht 'reset legend so that it matches series .HasLegend = False .HasLegend = True 'iterate backwards to delete For i = .SeriesCollection.Count To 1 Step -1 Set ser = .SeriesCollection(i) 'set series colors based on name If ser.Name = "running" Then ser.Format.Fill.ForeColor.RGB = RGB(0, 176, 80) ElseIf ser.Name = "stopped" Then ser.Format.Fill.ForeColor.RGB = RGB(255, 0, 0) End If 'delete the legend entry if after first 2 If i > 2 Then .Legend.LegendEntries(i).Delete End If Next i End With End Sub 

之前

之前

后