Excel条形图-相同名称的相同颜色和图例条目
我想绘制一段时间内机器的状态图。例如,它可能会“运行”2小时,然后“停止”1小时,每个状态可能会出现多次。使用堆叠条形图,我想显示该状态及其停留在该状态的时间。 我发现excel正在为每个新状态实例分配一个新的颜色和图例条目,即使该状态已经发生。Excel条形图-相同名称的相同颜色和图例条目,excel,vba,charts,Excel,Vba,Charts,我想绘制一段时间内机器的状态图。例如,它可能会“运行”2小时,然后“停止”1小时,每个状态可能会出现多次。使用堆叠条形图,我想显示该状态及其停留在该状态的时间。 我发现excel正在为每个新状态实例分配一个新的颜色和图例条目,即使该状态已经发生。 如何使图表中的相同命名状态具有相同的颜色(例如,每次显示“running”时,它都具有相同的颜色和单个图例条目)?谢谢状态名称存储为序列名称。图表中的每个堆栈都有一个系列。可以遍历系列并根据系列名称设置它们的样式。也可以使用LegendEntries对
如何使图表中的相同命名状态具有相同的颜色(例如,每次显示“running”时,它都具有相同的颜色和单个图例条目)?谢谢状态名称存储为序列名称。图表中的每个堆栈都有一个系列。可以遍历系列并根据系列名称设置它们的样式。也可以使用LegendEntries对象从图例中删除条目 将这些元素组合到一个循环中,可以更新系列颜色(如果它与标题匹配),然后从图例中删除该项目(如果它不是前两个系列中的一个)。这假设“运行”和“停止”在开始时交替出现,并且是要保留在图例中的条目。如果不是这样,您可以做更多的逻辑来发现要保留的条目
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
之前
之后
我正在使用VBA生成数据。我不介意图表是使用VBA格式化还是通过常规excel界面格式化。