top of page

Como Gerar Relatórios Dinâmicos e Gráficos Avançados com VBA Excel

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:

  1. Eficiência: Criação rápida de relatórios complexos.

  2. Consistência: Garantia de que os relatórios sejam gerados da mesma maneira toda vez.

  3. Flexibilidade: Personalização total dos relatórios e gráficos de acordo com suas necessidades.

  4. 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:

  1. Configurando o Ambiente:

  • Certifique-se de que a guia "Desenvolvedor" esteja habilitada no Excel.

  • Abra o Editor VBA (Alt + F11).

  1. 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

  1. 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:

  1. 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
  1. 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:

  1. 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
  1. 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!

23 visualizações0 comentário

Comments


bottom of page