web-dev-qa-db-ja.com

Excelでのグラフデータシリーズの並べ替え

Excelでグラフを作成するためにシリーズをどのように並べ替えますか?

たとえば、グラフに移動し、右クリックして[データの選択]をクリックします。左の列には、シリーズ1、シリーズ2、...、シリーズnがあります。たとえば、シリーズ4の後にシリーズ3を移動したいのですが、チャートビューから実行できますか?ワークシートのデータセルを移動したくありません。

Excel 2011(mac os x)を使用しています。

39
KM.

シリーズを選択し、数式バーを見てください。最後の引数は、シリーズのプロット順序です。この数式は、数式バーで他の数式と同じように編集できます。

たとえば、シリーズ4を選択し、4を3に変更します。

65
Jon Peltier

チャート上のシリーズを右クリックします。 [データシリーズの書式設定]ダイアログには、[シリーズ順序]タブがあり、ここでシリーズを上下に移動できます。これは、シリーズ式の最後の引数をいじるよりもずっと簡単だと思います。

これは、WindowsのExcel 2003にあります。 Excel 2011 for Macにも同様のダイアログがあります。

enter image description here

これらはUP/DOWNボタンです

enter image description here

21
Dr. belisarius

下記参照

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
4
Hakan

Excel 2010-ピボットチャートで系列を並べ替える場合:

  • 基になるピボットテーブルに移動します
  • 調整するシリーズの列ラベルのいずれかを右クリックします(注:列ではなく、シリーズの見出し(例では「土曜日」または「日曜日」)のいずれかをクリックする必要がありますラベルのテキスト自体)
  • ポップアップメニューで[移動]にカーソルを合わせ、結果のサブメニューからオプションを選択してシリーズ変数の位置を変更します。
  • ピボットチャートはそれに応じて更新されます

enter image description here

3
Jon295087

Mac 2011のExcelでグラフ内のシリーズの積み重ね順序を変更するには:

  1. チャートを選択し、
  2. シリーズを選択します(リボン>グラフレイアウト>現在の選択で最も簡単です)、
  3. [チャートレイアウト]> [選択範囲の書式設定]または[メニュー]> [書式設定]> [データシリーズ...]をクリックします。
  4. ポップアップメニューの[データシリーズの書式設定]で[順序]をクリックし、個々のシリーズをクリックして、上に移動または下に移動ボタンをクリックして、対象シリーズの軸の積み重ね順序を調整します。これにより、プロットと凡例の順序が変更されますが、系列式の順序番号は変更されない場合があります。

セカンダリ軸に3つのシリーズのプロットがあり、上にしたいシリーズがMove UpおよびMove Downボタンを無視して下にスタックしていました。たまたまマーカーとしてのみフォーマットされていました。行を挿入し、presto(!)、プロット内の順序を変更できました。後でラインを削除することができ、時には注文することもできましたが、注文しないこともありました。

3
Jeff Glassman

参考までに、2つのy軸を使用している場合、注文番号はそのy軸の一連のセット内でのみ違いを生じます。セカンダリ-y軸はデフォルトでプライマリの上にあると思います。プライマリ軸のシリーズを一番上にしたい場合は、代わりにセカンダリにする必要があります。

3
omikun

Excel 2010でシリーズのシーケンスを変更するには:

  • データ系列を選択(クリック)し、[チャートツール]グループの[デザイン]タブをクリックします。
  • [データ]グループの[データの選択]をクリックし、ポップアップウィンドウで、移動するシリーズを強調表示します。
  • 「凡例エントリ」(シリーズ)というラベルの付いた左側のボックスの上部にある上向きまたは下向きの三角形をクリックします。
2
Helper

この関数は系列名を取得し、それらを配列に入れ、配列をソートし、それに基づいて、望ましい出力を提供するプロット順を定義します。

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
1
M--