0
我想對我的圖例進行排序並找不到任何可靠的答案。在這裏,Reordering Chart Data Series in Excel,你可以找出如何手動。此外,還有一個代碼發佈在那裏,這不適合我,對於這樣的任務來說太複雜了。基本上,我們正試圖自動化下圖中顯示的內容。如何排序VBA圖表的圖例
請提出你的解決方案或查找我的回答如果你有同樣的問題。
我想對我的圖例進行排序並找不到任何可靠的答案。在這裏,Reordering Chart Data Series in Excel,你可以找出如何手動。此外,還有一個代碼發佈在那裏,這不適合我,對於這樣的任務來說太複雜了。基本上,我們正試圖自動化下圖中顯示的內容。如何排序VBA圖表的圖例
請提出你的解決方案或查找我的回答如果你有同樣的問題。
此代碼獲取系列名稱,將它們放入數組中,對數組進行排序,並基於該數組定義繪製順序,從而得到所需的輸出。您可以將ActiveChart
更改爲圖表名稱以更明確。隨意應用任何改進。
Sub Sorting_Legend()
Dim Arr()
ReDim Arr(1 To ActiveChart.FullSeriesCollection.Count)
'Assigning Series names to an array
For i = LBound(Arr) To UBound(Arr)
Arr(i) = ActiveChart.FullSeriesCollection(i).Name
Next i
'Bubble-Sort (Sort the array in increasing order)
For r1 = LBound(Arr) To UBound(Arr)
rval = Arr(r1)
For r2 = LBound(Arr) To UBound(Arr)
If Arr(r2) > rval Then 'Change ">" to "<" to make it decreasing
Arr(r1) = Arr(r2)
Arr(r2) = rval
rval = Arr(r1)
End If
Next r2
Next r1
'Defining the PlotOrder
For i = LBound(Arr) To UBound(Arr)
ActiveChart.FullSeriesCollection(Arr(i)).PlotOrder = i
Next i
End Sub
Excel將該系列的名稱視爲文本。所以你會遇到這個問題,而不是有1,2,3,...
你最終得到1,10,11,...,19,2,20,...
。在這種情況下,將數組轉換爲數字。這裏有一些問題,如convert an array to number,可以完成這項工作。您也可以簡單地比較每個元素的Cdbl
與另一個元素。 (即If Cdbl(Arr(r2)) > Cdbl(rval) Then ...
)
這將完成這項工作,但如果您能想到更好的方法,請在此處發佈。 – Masoud