Изменение порядка рядов данных диаграммы в Excel

37

Как изменить порядок рядов, используемых для создания диаграммы в Excel?

Например, я перехожу к диаграмме, щелкните правой кнопкой мыши > Выбрать данные. В левом столбце я вижу ряд 1, ряд 2,..., ряд n. Скажем, я хочу перенести серию 3 после серии 4, можно ли это сделать из графика? Я не хочу перемещать ячейки данных на листе.

Я использую Excel 2011 (mac os x).

  • 1
    Как вы спросили (до того, как я его отредактировал), подходящим местом для такого типа вопросов является Super User, так как он не связан с кодом.
Теги:
excel-vba
excel
charts
excel-2011

9 ответов

66
Лучший ответ

Выберите серию и посмотрите в строке формул. Последним аргументом является порядок сюжета серии. Вы можете отредактировать эту формулу так же, как и любую другую, прямо в строке формул.

Например, выберите серию 4, затем измените значение 4 на 3.

  • 1
    Ницца! За исключением случаев, когда у вас есть серия «n», вы не можете перейти к n + 1; Excel держит вас на "н." Моя гистограмма имеет пары столбцов с пробелом, и я не могу добавить пробел b / n для последних двух пар пар, используя это, но это здорово! Спасибо!
  • 0
    @KM Добавьте еще одну серию в таблицу, делайте то, что вам нужно, удалите в конце.
40

Щелкните правой кнопкой мыши любую серию на диаграмме. В диалоговом окне "Формат данных" есть вкладка "Серийный заказ", в которой вы можете перемещать серию вверх и вниз. Я нахожу это намного легче, чем играть с последним аргументом формулы ряда.

Это в Excel 2003 в Windows. В Excel 2011 для Mac есть аналогичный диалог:

Изображение 3767

19

Это кнопки UP/DOWN

Изображение 3768

  • 5
    Спасибо. К сожалению, они отсутствуют в версии Mac. Вздох.
  • 1
    Это прекрасно работало в версии Windows 2010. Это гораздо лучше, чем пытаться манипулировать формулами. В 2010 году вы можете сделать это, щелкнув правой кнопкой мыши в любом месте графика и выбрав «Выбрать данные». Это легко сделать и легко научить других людей в офисе.
3

Чтобы изменить порядок стекирования для рядов в диаграммах в Excel для Mac 2011:

  • выберите диаграмму,
  • выберите серию (проще всего в разделе "Лента" > "Макет диаграммы" > "Текущий выбор" ),
  • выберите "Макет диаграммы" > "Выбор формата" или "Меню" > "Формат" > "Серия данных...",
  • во всплывающем меню Формат серии данных нажмите "Заказ", затем выберите отдельные серии и нажмите кнопки Переместить вверх или Переместить вниз, чтобы настроить порядок укладки в оси для серии предметов, Это изменяет порядок для сюжета и легенды, но не может изменить номер заказа в формуле Series.

У меня был график трех серий на вторичной оси, и серия, которую я хотел сверху, застряла на дне вопреки кнопкам Переместить вверх и Переместить вниз, Это было отформатировано только как маркеры. Я вставил строку, и престо (!), Я мог бы изменить свой порядок в сюжете. Позже я мог удалить линию, и иногда ее все равно можно было заказать, но иногда нет.

3

См. ниже

Используйте приведенный ниже код, если вы используете 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
3

FYI, если вы используете две оси y, номера заказов будут иметь значение только в пределах набора рядов этой оси y. Я полагаю, что по умолчанию вторичная ось-оси находится поверх первичной. Если вы хотите, чтобы серия на первичной оси была сверху, вам нужно сделать ее вторичной.

  • 0
    вторичная ось Y по умолчанию находится в нижней части первичной
  • 1
    @Mooseman: вы не правы. По крайней мере, в Excel 2010.
Показать ещё 1 комментарий
2

Чтобы изменить последовательность рядов в Excel 2010:

  • Выберите (щелкните) любую серию данных и перейдите на вкладку "Дизайн" в группе "Инструменты диаграммы".
  • Нажмите "Выбрать данные" в группе "Данные" и во всплывающем окне выделите серию, которую нужно переместить.
  • Нажмите верхний или нижний треугольник в верхней части левого поля с надписью "Legend Entries" (Series).
1

Excel 2010 - если вы хотите изменить порядок рядов на сводной диаграмме :

  • перейдите в свою основную сводную таблицу
  • щелкните правой кнопкой мыши по одной из ярлыков столбцов для серии, которую вы хотите настроить (обратите внимание: вам нужно щелкнуть по одному из заголовков серий (например, "суббота" или "воскресенье" в примере, показанном ниже), а не сам текст "Этикетки столбцов" )
  • во всплывающем меню, наведите указатель мыши на "Переместить", а затем выберите параметр из результирующего подменю, чтобы переместить переменную серии.
  • ваша сводная диаграмма обновит себя соответственно.

Изображение 3769

1

Эта функция получает имена серий, помещает их в массив, сортирует массив и на основе этого определяет порядок построения, который даст желаемый результат.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню