Comment créer un graphique Excel qui extrait des données de plusieurs feuilles? [fermé]

StackOverflow https://stackoverflow.com/questions/163363

  •  03-07-2019
  •  | 
  •  

Question

Les chiffres des ventes mensuelles sont stockés sur des feuilles séparées. J'aimerais créer un graphique des ventes de plusieurs produits par mois. Chaque produit serait représenté par une ligne de couleur différente sur le même graphique, chaque mois suivant l'axe x.

Quel est le meilleur moyen de créer un graphique à une seule ligne à partir des mêmes cellules relatives sur plusieurs feuilles?

Était-ce utile?

La solution

Utilisez l'assistant graphique.

À l'étape 2 sur 4, il y a un onglet "Série". Il y a 3 champs et une zone de liste sur cet onglet. La liste contient les différentes séries que vous incluez déjà dans le graphique. Chaque série comporte à la fois un " Nom " champ et un "Valeurs" champ qui est spécifique à cette série. Le dernier champ est l’étiquette "Etiquettes des axes de la catégorie (X)". champ commun à toutes les séries.

Cliquez sur le lien " Ajouter " bouton sous la liste. Cela ajoutera une série vierge à votre liste. Notez que les valeurs de " Nom " et pour " Values ??" changez lorsque vous mettez une série en surbrillance dans la liste.

Sélectionnez votre nouvelle série.

Il y a une icône dans chaque champ du côté droit. Cette icône vous permet de sélectionner des cellules dans le classeur pour extraire les données. Lorsque vous cliquez dessus, l'Assistant se cache temporairement (sauf pour le champ dans lequel vous travaillez) vous permettant d'interagir avec le classeur.

Sélectionnez la feuille appropriée dans le classeur, puis sélectionnez les champs contenant les données que vous souhaitez afficher dans le graphique. Vous pouvez cliquer sur le bouton situé à droite du champ pour afficher l’Assistant.

L’espoir que cela aide.

EDIT: Ce qui précède s’applique à 2003 et avant. Pour 2007, lorsque le graphique est sélectionné, vous devriez pouvoir effectuer une action similaire à l'aide de l'option "Sélectionner les données". option sur le " Design " onglet du ruban. Cela ouvre une boîte de dialogue listant la série pour le graphique. Vous pouvez sélectionner la série exactement comme dans Excel 2003, mais vous devez utiliser l'option " Ajouter " et " Modifier " boutons pour définir une série personnalisée.

Autres conseils

Voici un code d'Excel 2010 qui pourrait fonctionner. Il a quelques spécificités (comme le filtrage des caractères mal encodés dans les titres), mais il a été conçu pour créer plusieurs graphiques multi-séries à partir de données à 4 dimensions contenant à la fois des données absolues et des pourcentages. Modifiez-le comme bon vous semble:

Sub createAllGraphs()

Const chartWidth As Integer = 260
Const chartHeight As Integer = 200




If Sheets.Count = 1 Then
    Sheets.Add , Sheets(1)
    Sheets(2).Name = "AllCharts"
ElseIf Sheets("AllCharts").ChartObjects.Count > 0 Then
    Sheets("AllCharts").ChartObjects.Delete
End If
Dim c As Variant
Dim c2 As Variant
Dim cs As Object
Set cs = Sheets("AllCharts")
Dim s As Object
Set s = Sheets(1)

Dim i As Integer


Dim chartX As Integer
Dim chartY As Integer

Dim r As Integer
r = 2

Dim curA As String
curA = s.Range("A" & r)
Dim curB As String
Dim curC As String
Dim startR As Integer
startR = 2

Dim lastTime As Boolean
lastTime = False

Do While s.Range("A" & r) <> ""

    If curC <> s.Range("C" & r) Then

        If r <> 2 Then
seriesAdd:
            c.SeriesCollection.Add s.Range("D" & startR & ":E" & (r - 1)), , False, True
            c.SeriesCollection(c.SeriesCollection.Count).Name = Replace(s.Range("C" & startR), "Â", "")
            c.SeriesCollection(c.SeriesCollection.Count).XValues = "='" & s.Name & "'!$D<*>quot; & startR & ":$D<*>quot; & (r - 1)
            c.SeriesCollection(c.SeriesCollection.Count).Values = "='" & s.Name & "'!$E<*>quot; & startR & ":$E<*>quot; & (r - 1)
            c.SeriesCollection(c.SeriesCollection.Count).HasErrorBars = True
            c.SeriesCollection(c.SeriesCollection.Count).ErrorBars.Select
            c.SeriesCollection(c.SeriesCollection.Count).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, Amount:="='" & s.Name & "'!$F<*>quot; & startR & ":$F<*>quot; & (r - 1), minusvalues:="='" & s.Name & "'!$F<*>quot; & startR & ":$F<*>quot; & (r - 1)
            c.SeriesCollection(c.SeriesCollection.Count).ErrorBar Direction:=xlX, Include:=xlBoth, Type:=xlFixedValue, Amount:=0

            c2.SeriesCollection.Add s.Range("D" & startR & ":D" & (r - 1) & ",G" & startR & ":G" & (r - 1)), , False, True
            c2.SeriesCollection(c2.SeriesCollection.Count).Name = Replace(s.Range("C" & startR), "Â", "")
            c2.SeriesCollection(c2.SeriesCollection.Count).XValues = "='" & s.Name & "'!$D<*>quot; & startR & ":$D<*>quot; & (r - 1)
            c2.SeriesCollection(c2.SeriesCollection.Count).Values = "='" & s.Name & "'!$G<*>quot; & startR & ":$G<*>quot; & (r - 1)
            c2.SeriesCollection(c2.SeriesCollection.Count).HasErrorBars = True
            c2.SeriesCollection(c2.SeriesCollection.Count).ErrorBars.Select
            c2.SeriesCollection(c2.SeriesCollection.Count).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, Amount:="='" & s.Name & "'!$H<*>quot; & startR & ":$H<*>quot; & (r - 1), minusvalues:="='" & s.Name & "'!$H<*>quot; & startR & ":$H<*>quot; & (r - 1)
            c2.SeriesCollection(c2.SeriesCollection.Count).ErrorBar Direction:=xlX, Include:=xlBoth, Type:=xlFixedValue, Amount:=0
            If lastTime = True Then GoTo postLoop
        End If

        If curB <> s.Range("B" & r).Value Then

            If curA <> s.Range("A" & r).Value Then
                chartX = chartX + chartWidth * 2
                chartY = 0
                curA = s.Range("A" & r)
            End If

            Set c = cs.ChartObjects.Add(chartX, chartY, chartWidth, chartHeight)
            Set c = c.Chart
            c.ChartWizard , xlXYScatterSmooth, , , , , True, Replace(s.Range("B" & r), "Â", "") & " " & s.Range("A" & r), s.Range("D1"), s.Range("E1")

            Set c2 = cs.ChartObjects.Add(chartX + chartWidth, chartY, chartWidth, chartHeight)
            Set c2 = c2.Chart
            c2.ChartWizard , xlXYScatterSmooth, , , , , True, Replace(s.Range("B" & r), "Â", "") & " " & s.Range("A" & r) & " (%)", s.Range("D1"), s.Range("G1")

            chartY = chartY + chartHeight
            curB = s.Range("B" & r)
            curC = s.Range("C" & r)
        End If

        curC = s.Range("C" & r)
        startR = r
    End If

    If s.Range("A" & r) <> "" Then oneMoreTime = False ' end the loop for real this time
    r = r + 1
Loop

lastTime = True
GoTo seriesAdd
postLoop:
cs.Activate

End Sub

2007 est plus puissant avec le ruban ..: =) Pour ajouter de nouvelles séries au graphique, procédez comme suit: Sélectionnez Graphique, puis cliquez sur Créer dans les outils de graphique du ruban, Dans le ruban de conception, sélectionnez "Sélectionner les données". dans le groupe de données, Ensuite, vous verrez le bouton Ajouter pour ajouter une nouvelle série.

J'espère que cela vous aidera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top