Como faço para criar um gráfico do Excel que extrai dados de várias folhas? [fechadas]
-
03-07-2019 - |
Pergunta
Eu tenho números de vendas mensais armazenados em folhas separadas. Eu gostaria de criar um lote de vendas para vários produtos por mês. Cada produto seria representado em uma linha de cor diferente no mesmo gráfico a cada mês consecutivo ao longo do eixo x.
O que é a melhor maneira de criar um único gráfico de linha que puxa a partir das mesmas células relativos em várias folhas?
Solução
Use o Assistente de gráfico.
Na Etapa 2 de 4, há um guia "Series". Existem 3 campos e uma caixa de listagem nesta guia. A caixa de lista mostra as diferentes séries você já está incluindo no gráfico. Cada série tem tanto um campo "Nome" e um campo de "valores" que é específico para essa série. O campo final é a "Categoria (X) eixo rótulos" campo, que é comum a todas as séries.
Clique no botão "Adicionar" abaixo da caixa de lista. Isto irá adicionar uma série em branco para a sua caixa lista. Observe que os valores para "Nome" e para "Valores" mudança quando você realça uma série na caixa de lista.
Selecione a sua nova série.
Há um ícone em cada campo do lado direito. Este ícone permite que você selecione as células na pasta de trabalho para puxar os dados. Quando você clicar nele, o Assistente de esconde-se temporariamente (exceto para o campo que você está trabalhando) que lhe permite interagir com o livro.
Selecione a planilha apropriada na pasta de trabalho e, em seguida, selecionar os campos com os dados que você deseja mostrar no gráfico. O botão à direita do campo pode ser clicado para reexibir o assistente.
Espero que ajude.
EDIT: O acima se aplica a 2003 e antes. Para 2007, quando o gráfico é selecionado, você deve ser capaz de fazer uma ação similar, usando a opção "Selecionar dados" na aba "Design" da fita. Isso abre uma caixa de diálogo listando a série para o gráfico. Você pode selecionar a série, assim como você poderia no Excel 2003, mas você deve usar os botões "Adicionar" "Editar" para definir série personalizada.
Outras dicas
Aqui está um código de Excel 2010 que pode funcionar. Tem algumas especificidades (como filtragem de caracteres bad-codificar de títulos), mas ele foi projetado para criar vários gráficos multi-série a partir de dados 4-dimensional com ambos os dados absolutos e baseados em percentuais. Modificá-lo como você gosta:
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$" & startR & ":$D$" & (r - 1)
c.SeriesCollection(c.SeriesCollection.Count).Values = "='" & s.Name & "'!$E$" & startR & ":$E$" & (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$" & startR & ":$F$" & (r - 1), minusvalues:="='" & s.Name & "'!$F$" & startR & ":$F$" & (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$" & startR & ":$D$" & (r - 1)
c2.SeriesCollection(c2.SeriesCollection.Count).Values = "='" & s.Name & "'!$G$" & startR & ":$G$" & (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$" & startR & ":$H$" & (r - 1), minusvalues:="='" & s.Name & "'!$H$" & startR & ":$H$" & (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 é mais poderoso com fita ..: =) Para adicionar nova série no gráfico de fazer: Selecione Gráfico, clique em Design, em Ferramentas de Gráfico na fita, Na faixa de opções de design, selecione "Select Data" em Data Group, Em seguida, você verá o botão para Adicionar para adicionar nova série.
Hope que vai ajudar.