Как изменить порядок рядов, используемых для создания диаграммы в Excel?
Например, я перехожу к диаграмме, щелкните правой кнопкой мыши > Выбрать данные. В левом столбце я вижу ряд 1, ряд 2,..., ряд n. Скажем, я хочу перенести серию 3 после серии 4, можно ли это сделать из графика? Я не хочу перемещать ячейки данных на листе.
Я использую Excel 2011 (mac os x).
Выберите серию и посмотрите в строке формул. Последним аргументом является порядок сюжета серии. Вы можете отредактировать эту формулу так же, как и любую другую, прямо в строке формул.
Например, выберите серию 4, затем измените значение 4 на 3.
Щелкните правой кнопкой мыши любую серию на диаграмме. В диалоговом окне "Формат данных" есть вкладка "Серийный заказ", в которой вы можете перемещать серию вверх и вниз. Я нахожу это намного легче, чем играть с последним аргументом формулы ряда.
Это в Excel 2003 в Windows. В Excel 2011 для Mac есть аналогичный диалог:
Это кнопки UP/DOWN
Чтобы изменить порядок стекирования для рядов в диаграммах в Excel для Mac 2011:
У меня был график трех серий на вторичной оси, и серия, которую я хотел сверху, застряла на дне вопреки кнопкам Переместить вверх и Переместить вниз, Это было отформатировано только как маркеры. Я вставил строку, и престо (!), Я мог бы изменить свой порядок в сюжете. Позже я мог удалить линию, и иногда ее все равно можно было заказать, но иногда нет.
См. ниже
Используйте приведенный ниже код, если вы используете excel 2007 или 2010 и хотите изменить порядок легенд. Убедитесь, что mChartName соответствует имени диаграммы.
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
FYI, если вы используете две оси y, номера заказов будут иметь значение только в пределах набора рядов этой оси y. Я полагаю, что по умолчанию вторичная ось-оси находится поверх первичной. Если вы хотите, чтобы серия на первичной оси была сверху, вам нужно сделать ее вторичной.
Чтобы изменить последовательность рядов в Excel 2010:
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