我试图对我的传奇进行排序,但找不到任何可靠的答案。在这里Reordering Chart Data Series in Excel,您可以了解如何手动执行此操作。此外,在那里发布了一个代码,这对我来说不起作用,这对于像这样的任务来说太复杂了。基本上,我们正在尝试自动化下图所示的内容。
如果您遇到同样的问题,请提出您的解决方案或查找我的答案。
答案 0 :(得分:2)
此代码获取系列名称,将它们放入数组中,对数组进行排序,并根据该数组定义将提供所需输出的绘图顺序。您可以将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 ...
)