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