No último post, aprendemos a importar e manipular dados de diferentes fontes usando VBA. Hoje, vamos explorar como gerar relatórios dinâmicos e gráficos avançados no Excel utilizando VBA. Este tutorial é perfeito para quem deseja criar relatórios automatizados e visuais poderosos para análise de dados.
Por que Usar VBA para Relatórios e Gráficos?
Automatizar a geração de relatórios e gráficos com VBA oferece vários benefícios:
Eficiência: Criação rápida de relatórios complexos.
Consistência: Garantia de que os relatórios sejam gerados da mesma maneira toda vez.
Flexibilidade: Personalização total dos relatórios e gráficos de acordo com suas necessidades.
Interatividade: Relatórios dinâmicos que se atualizam automaticamente com novos dados.
Criando Relatórios Dinâmicos
Vamos começar criando um relatório dinâmico que resume dados de vendas. Este relatório incluirá cálculos automáticos e uma formatação condicional.
Passo a Passo:
Configurando o Ambiente:
Certifique-se de que a guia "Desenvolvedor" esteja habilitada no Excel.
Abra o Editor VBA (Alt + F11).
Criando o Script VBA:
Insira um novo módulo no Editor VBA.
Copie e cole o seguinte código:
Sub GerarRelatorioDinamico()
Dim ws As Worksheet
Dim wsRelatorio As Worksheet
Dim ultimo As Long
Dim totalVendas As Double
' Definindo a planilha de dados e a de relatório
Set ws = Sheets("Vendas")
Set wsRelatorio = Sheets("Relatorio")
wsRelatorio.Cells.Clear ' Limpa dados antigos
' Copiando cabeçalhos
ws.Rows(1).Copy Destination:=wsRelatorio.Rows(1)
' Copiando dados
ultimo = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
ws.Rows("2:" & ultimo).Copy Destination:=wsRelatorio.Rows(2)
' Calculando totais de vendas
totalVendas = Application.WorksheetFunction.Sum(wsRelatorio.Range("B2:B" & ultimo))
wsRelatorio.Cells(ultimo + 1, 1).Value = "Total Vendas"
wsRelatorio.Cells(ultimo + 1, 2).Value = totalVendas
' Aplicando formatação condicional
With wsRelatorio.Range("B2:B" & ultimo)
.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=1000"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.399945066682943
End With
End With
' Ajustando largura das colunas
wsRelatorio.Columns.AutoFit
End Sub
Executando o Script:
No Editor VBA, clique em "Executar" (ícone de play) ou pressione F5.
O script gerará um relatório dinâmico na planilha "Relatorio".
Criando Gráficos Avançados com VBA Excel
Agora, vamos criar um gráfico avançado que visualize os dados do relatório de vendas.
Passo a Passo:
Criando o Script VBA para o Gráfico:
Insira um novo módulo no Editor VBA.
Copie e cole o seguinte código:
Sub CriarGraficoVendas()
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim ultimo As Long
' Definindo a planilha de relatório
Set ws = Sheets("Relatorio")
' Encontrando a última linha com dados
ultimo = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' Criando o gráfico
Set chartObj = ws.ChartObjects.Add(Left:=300, Width:=375, Top:=50, Height:=225)
With chartObj.Chart
.SetSourceData Source:=ws.Range("A1:B" & ultimo)
.ChartType = xlColumnClustered
.HasTitle = True
.ChartTitle.Text = "Relatório de Vendas"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Produtos"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Text = "Vendas"
End With
End Sub
Executando o Script:
No Editor VBA, clique em "Executar" (ícone de play) ou pressione F5.
O script criará um gráfico avançado na planilha "Relatorio".
Personalizando Relatórios e Gráficos
Você pode personalizar ainda mais seus relatórios e gráficos adicionando elementos como:
Filtros Dinâmicos: Para permitir a seleção interativa de dados.
Gráficos Interativos: Como gráficos de pizza, linhas ou áreas que se atualizam com os dados.
Dashboards: Combinação de gráficos e tabelas dinâmicas para uma visão abrangente.
Exemplo de Relatório e Gráfico Combinado
Vamos combinar tudo o que aprendemos em um script que gera um relatório dinâmico e cria um gráfico correspondente.
Passo a Passo:
Criando o Script Combinado:
Insira um novo módulo no Editor VBA.
Copie e cole o seguinte código:
Sub GerarRelatorioEGrafico()
Dim ws As Worksheet
Dim wsRelatorio As Worksheet
Dim ultimo As Long
Dim totalVendas As Double
Dim chartObj As ChartObject
' Definindo a planilha de dados e a de relatório
Set ws = Sheets("Vendas")
Set wsRelatorio = Sheets("Relatorio")
wsRelatorio.Cells.Clear ' Limpa dados antigos
' Copiando cabeçalhos
ws.Rows(1).Copy Destination:=wsRelatorio.Rows(1)
' Copiando dados
ultimo = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
ws.Rows("2:" & ultimo).Copy Destination:=wsRelatorio.Rows(2)
' Calculando totais de vendas
totalVendas = Application.WorksheetFunction.Sum(wsRelatorio.Range("B2:B" & ultimo))
wsRelatorio.Cells(ultimo + 1, 1).Value = "Total Vendas"
wsRelatorio.Cells(ultimo + 1, 2).Value = totalVendas
' Aplicando formatação condicional
With wsRelatorio.Range("B2:B" & ultimo)
.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=1000"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.399945066682943
End With
End With
' Ajustando largura das colunas
wsRelatorio.Columns.AutoFit
' Criando o gráfico
Set chartObj = wsRelatorio.ChartObjects.Add(Left:=300, Width:=375, Top:=50, Height:=225)
With chartObj.Chart
.SetSourceData Source:=wsRelatorio.Range("A1:B" & ultimo)
.ChartType = xlColumnClustered
.HasTitle = True
.ChartTitle.Text = "Relatório de Vendas"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Produtos"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Text = "Vendas"
End With
End Sub
Executando o Script:
No Editor VBA, clique em "Executar" (ícone de play) ou pressione F5.
O script gerará um relatório dinâmico e criará um gráfico avançado na planilha "Relatorio".
Como é de praxe aqui no blog, segue mais uma dica de como usar gráficos dinâmicos em userforms do VBA Excel.
Conclusão
Gerar relatórios dinâmicos e gráficos avançados com VBA no Excel pode transformar a maneira como você analisa e apresenta dados. Com prática e personalização, você pode criar ferramentas poderosas que economizam tempo e fornecem insights valiosos.
Convite à interação: Se você gostou deste post, não se esqueça de se inscrever no blog e deixar seus comentários. Quais são suas maiores dificuldades com relatórios e gráficos no Excel? Quais temas você gostaria de ver aqui? Até a próxima!
Comments