0
我想绘制一段时间内机器的状态。例如,它可能会“运行”2小时,然后“停止”1小时,并且可能会出现几次每种状态。使用堆积条形图,我想显示状态和停留在状态的时间量。 我发现,即使该状态已经发生,excel也会为每个新的状态实例分配一个新的颜色和图例条目。
如何让图表中的同名状态具有相同的颜色(例如,每次显示“正在运行”时,它都具有相同的颜色和单个图例条目)?谢谢Excel条形图 - 同名的相同颜色和图例条目
我想绘制一段时间内机器的状态。例如,它可能会“运行”2小时,然后“停止”1小时,并且可能会出现几次每种状态。使用堆积条形图,我想显示状态和停留在状态的时间量。 我发现,即使该状态已经发生,excel也会为每个新的状态实例分配一个新的颜色和图例条目。
如何让图表中的同名状态具有相同的颜色(例如,每次显示“正在运行”时,它都具有相同的颜色和单个图例条目)?谢谢Excel条形图 - 同名的相同颜色和图例条目
状态名称存储为系列名称。 Chart中的每个堆栈都有一个系列。可以遍历系列并根据系列名称对其进行设计。也可以使用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
后您使用VBA此 - 或者提议? – pnuts 2015-04-01 16:23:24
我正在使用VBA生成数据。我不介意图表是使用VBA格式还是通过常规的Excel界面格式化。 – user4739039 2015-04-01 18:57:16