Pregunta

Tengo cifras de ventas mensuales almacenadas en hojas separadas. Me gustaría crear un gráfico de ventas para varios productos por mes. Cada producto se representaría en una línea de color diferente en el mismo gráfico con cada mes a lo largo del eje x.

¿Cuál es la mejor manera de crear un gráfico de una sola línea que se extrae de las mismas celdas relativas en varias hojas?

¿Fue útil?

Solución

Usa el Asistente de Gráficos

En el Paso 2 de 4, hay una pestaña con la etiqueta " Series " ;. Hay 3 campos y un cuadro de lista en esta pestaña. El cuadro de lista muestra las diferentes series que ya está incluyendo en el gráfico. Cada serie tiene un " Nombre " campo y un " Valores " Campo que es específico para esa serie. El campo final es la etiqueta de eje de Categoría (X) " campo, que es común a todas las series.

Haz clic en el " Agregar " botón debajo del cuadro de lista. Esto agregará una serie en blanco a su cuadro de lista. Tenga en cuenta que los valores de " Nombre " y para " Valores " cambiar cuando resaltes una serie en el cuadro de lista.

Selecciona tu nueva serie.

Hay un icono en cada campo en el lado derecho. Este icono le permite seleccionar celdas en el libro de trabajo para extraer los datos. Al hacer clic en él, el asistente se oculta temporalmente (excepto en el campo en el que está trabajando), lo que le permite interactuar con el libro de trabajo.

Seleccione la hoja apropiada en el libro de trabajo y luego seleccione los campos con los datos que desea mostrar en el cuadro. Se puede hacer clic en el botón a la derecha del campo para mostrar el asistente.

Espero que ayude.

EDITAR: Lo anterior se aplica a 2003 y antes. Para 2007, cuando se selecciona el gráfico, debería poder realizar una acción similar con la opción " Seleccionar datos " opción en el " Diseño " pestaña de la cinta. Esto abre un cuadro de diálogo que enumera las Series para el gráfico. Puede seleccionar la serie tal como podría hacerlo en Excel 2003, pero debe usar el botón " Agregar " y " Editar " Botones para definir series personalizadas.

Otros consejos

Aquí hay algunos códigos de Excel 2010 que pueden funcionar. Tiene un par de detalles específicos (como filtrar los caracteres con codificación incorrecta de los títulos), pero fue diseñado para crear múltiples gráficas de varias series a partir de datos de 4 dimensiones que tienen datos absolutos y basados ??en porcentajes. Modifícalo como quieras:

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 es más poderoso con la cinta ..: =) Para agregar nuevas series en la tabla haz: Seleccione Gráfico, luego haga clic en Diseño en Herramientas de gráfico en la cinta, En la cinta de diseño, seleccione " Seleccionar datos " en el grupo de datos, Luego verá el botón para Agregar para agregar nuevas series.

Espero que eso ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top