Comment peut-on réorganiser une série utilisée pour créer un graphique dans Excel?
Par exemple, je vais dans le graphique, faites un clic droit> Sélectionner des données. Dans la colonne de gauche, je vois la série 1, la série 2, ..., la série n. Dis, je veux déplacer la série 3 après la série 4, cela peut-il être fait à partir de la vue graphique? Je ne veux pas déplacer les cellules de données dans la feuille de calcul.
J'utilise Excel 2011 (Mac OS X).
Sélectionnez une série et regardez dans la barre de formule. Le dernier argument est l'ordre de parcelle de la série. Vous pouvez modifier cette formule comme n'importe quelle autre, directement dans la barre de formule.
Par exemple, sélectionnez la série 4, puis changez le 4 en 3.
Cliquez avec le bouton droit sur n'importe quelle série du graphique. Dans la boîte de dialogue "Formater la série de données", il existe un onglet "Ordre des séries" dans lequel vous pouvez déplacer les séries de haut en bas. Je trouve cela beaucoup plus facile que de jouer avec le dernier argument de la formule de la série.
Ceci est dans Excel 2003 sous Windows. Il existe une boîte de dialogue similaire dans Excel 2011 pour Mac:
Ce sont les boutons UP/DOWN
Voir ci-dessous
Utilisez le code ci-dessous, si vous utilisez Excel 2007 ou 2010 et souhaitez réorganiser les légendes uniquement. Assurez-vous que mChartName correspond à votre nom de graphique.
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
Excel 2010 - si vous souhaitez réorganiser la série sur un tableau croisé dynamique :
Pour modifier l'ordre d'empilement des séries dans les graphiques sous Excel pour Mac 2011:
J'avais un graphe de trois séries sur l'axe secondaire et la série que je voulais en haut était collée en bas, au mépris des boutons Move Up et Move Down. Il s'est avéré être formaté en tant que marqueurs uniquement. J'ai inséré une ligne, et hop (!), Je pourrais changer son ordre dans l'intrigue. Plus tard, je pouvais supprimer la ligne et parfois, elle pouvait toujours être commandée, mais parfois pas.
Pour votre information, si vous utilisez deux axes des ordonnées, les numéros d’ordre ne feront une différence que dans l’ensemble des séries de cet axe des ordonnées. Je crois que l'axe -y secondaire par défaut est au-dessus du primaire. Si vous voulez que la série de l'axe principal soit en haut, vous devrez plutôt la rendre secondaire.
Pour modifier la séquence d'une série dans Excel 2010:
Cette fonction récupère les noms des séries, les place dans un tableau, trie le tableau et définit l’ordre de traçage qui donnera le résultat souhaité.
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