如何重新排序用于创建Excel图表的系列?
例如,我进入图表,右键单击 > 选择数据。在左侧列中,我看到系列1、系列2到系列n。
比如,我想把第3个系列移动到第4个系列后面,可以在图表视图中完成吗?我不想移动工作表中的数据单元格。
我使用的是Excel 2011(Mac OS X)。
如何重新排序用于创建Excel图表的系列?
例如,我进入图表,右键单击 > 选择数据。在左侧列中,我看到系列1、系列2到系列n。
比如,我想把第3个系列移动到第4个系列后面,可以在图表视图中完成吗?我不想移动工作表中的数据单元格。
我使用的是Excel 2011(Mac OS X)。
选择一个系列并查看公式栏。最后一个参数是该系列的绘图顺序。您可以像处理其他任何公式一样,在公式栏中直接编辑此公式。
例如,选择第四个系列,然后将 4 改为 3。
在图表上右键单击任何系列。在“格式化数据系列”对话框中,有一个“系列顺序”选项卡,在其中可以上下移动系列。我发现这比调整系列公式的最后一个参数要容易得多。
这是在Windows上的Excel 2003中。在Mac上的Excel 2011中也有类似的对话框:
这些是上/下按钮
Sub ReverseOrderLegends()
mChartName = "Chart 1"
Dim sSeriesCollection As SeriesCollection
Dim mSeries As Series
With ActiveSheet
.ChartObjects(mChartName).Chart.SetElement (msoElementLegendNone)
.ChartObjects(mChartName).Chart.SetElement (msoElementLegendRight)
Set sSeriesCollection = .ChartObjects(mChartName).Chart.SeriesCollection
For Each mSeries In sSeriesCollection
If mSeries.Values(1) = 0.000000123 Or mSeries.Values(1) = Empty Then
mSeries.Delete
End If
Next mSeries
LegendCount = .ChartObjects(mChartName).Chart.SeriesCollection.Count
For mLegend = 1 To LegendCount
.ChartObjects(mChartName).Chart.SeriesCollection.NewSeries
.ChartObjects(mChartName).Chart.SeriesCollection(LegendCount + mLegend).Name = .ChartObjects(mChartName).Chart.SeriesCollection(LegendCount - mLegend + 1).Name
.ChartObjects(mChartName).Chart.SeriesCollection(LegendCount + mLegend).Values = "={0.000000123}"
.ChartObjects(mChartName).Chart.SeriesCollection(LegendCount + mLegend).Format.Fill.ForeColor.RGB = .ChartObjects(mChartName).Chart.SeriesCollection(LegendCount - mLegend + 1).Format.Fill.ForeColor.RGB
Next mLegend
For mLegend = 1 To LegendCount
.ChartObjects(mChartName).Chart.Legend.LegendEntries(1).Delete
Next mLegend
End With
End Sub
我在次坐标轴上有一个三个系列的图表,我想要的系列却固执地排在底部,无论怎么单击向上移动或向下移动按钮都无济于事。它的格式为仅标记。我插入了一条线,噫!在绘图中可以更改其顺序。后来我可以删除该线,有时仍然可以排序,但有时不行。
如果您正在使用两个y轴,则序号仅在该y轴系列中产生差异。我相信默认情况下,辅助-y轴位于主要位置的顶部。如果您希望主轴中的系列处于顶部,则需要将其设置为辅助轴。
如何在Excel 2010中更改系列的顺序:
Function Increasing_Legend_Sort(mychart As Chart)
Dim Arr()
ReDim Arr(1 To mychart.FullSeriesCollection.Count)
'Assigning Series names to an array
For i = LBound(Arr) To UBound(Arr)
Arr(i) = mychart.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)
mychart.FullSeriesCollection(Arr(i)).PlotOrder = i
Next i
End Function