我想在一段时间内绘制一台机器的状态。例如,它可能是"运行" 2小时然后"停止"持续1小时,每种状态可能会发生几次。使用堆积条形图我想显示状态和它在该状态下停留的时间。
我发现excel正在为每个新状态实例分配一个新的颜色和图例条目,即使该状态已经发生。
如何在图表中使相同的状态具有相同的颜色(例如,每次"运行"显示它具有相同的颜色和单个图例条目)?感谢
答案 0 :(得分:2)
州名称存储为系列名称。图表中的每个堆栈都有一个系列。可以遍历系列并根据系列名称对它们进行样式设置。也可以使用LegendEntries对象从Legend中删除条目。
将这些组合成一个循环,如果它与标题匹配,您可以更新系列颜色,如果它不是前两个系列中的一个,则从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