Tabelas dinâmicas no Excel são essenciais para tornar os dados mais fáceis de entender e compreender. Uma tabela dinâmica pode condensar e processar dados em estruturas significativas. Os usuários do MS Excel os adotaram amplamente na indústria de dados.

Você sabia que pode automatizar suas tabelas dinâmicas no Excel e criá-las com um único clique? O MS Excel integra-se bem com o VBA e tornou-se uma excelente ferramenta para automatizar tarefas repetitivas.

Veja como você pode automatizar uma tabela dinâmica com uma macro no MS Excel VBA.

Use um conjunto de dados de prática

Você pode baixar e usar um manequim conjunto de dados do Tableau seguir o script VBA deste guia. O código VBA funcionará com qualquer outro conjunto de dados, com alguns ajustes básicos. Antes de começar, certifique-se de ter macros habilitadas em sua pasta de trabalho do Excel.

Existem algumas colunas essenciais que você pode usar na tabela dinâmica. Para entender as nuances e a estrutura final da mesa, você pode criar uma tabela dinâmica básica manualmente com os seguintes elementos:

instagram viewer
  • Filtro: Região
  • Linhas: Subcategoria
  • Colunas: Estado
  • Valores: Vendas

O pivô final deve ter a seguinte aparência:

No entanto, você pode deixar o VBA fazer isso automaticamente em vez de prepará-lo manualmente.

Como criar tabelas dinâmicas automaticamente no Excel

Para automatizar suas tabelas dinâmicas com VBA, abra um novo arquivo do Excel e renomeie as planilhas da seguinte maneira:

  • Primeira folha: Macro
  • Segunda folha: Dados

O Macro folha contém o script de macro, enquanto o Dados planilha contém seus dados. Na folha de macro, você pode inserir qualquer forma de sua escolha e atribuir a macro a ela. Clique com o botão direito do mouse na forma e clique em Atribuir Macro.

Na caixa de diálogo a seguir, clique no nome da sua macro e clique em Ok. Esta etapa atribui a macro à forma.

1. Abra o Editor de codificação VBA do Excel

Imprensa Alt + F11 para abrir o editor de código. Quando estiver no editor de código, clique com o botão direito do mouse no nome do arquivo, seguido por Inserir e Módulo. É importante lembrar que você escreverá todo o código VBA dentro de um módulo antes de executá-lo.

É uma boa prática usar um nome de módulo que ressoe com o propósito do código. Como esta é uma demonstração, você pode definir o nome do módulo da seguinte maneira:

sub pivot_demo()

O nome do módulo termina com End Sub, que é o comando final de um módulo:

Fim Sub

2. Declarar Variáveis

Dentro do módulo, comece declarando variáveis ​​para armazenar alguns valores definidos pelo usuário que você usará no script. Você pode usar o Dim para declarar variáveis, como segue:

Dim PSheet Como Folha de trabalho, Folha de trabalho Como Planilha
Dim PvtCache Como PivotCache
Dim PvtTable Como Tabela Dinâmica
Dim PvtRange Como Faixa
Dim Last_Row Como Longo, Última_Col Como Longo
Dim sht1 como Variante

Você usará essas variáveis ​​para o seguinte:

  • PFolha: A planilha de destino, onde o VBA criará um pivô.
  • DFolha: A folha de dados.
  • PvtCache: Um cache pivô contém o pivô.
  • PvtTabela: O objeto da tabela dinâmica.
  • PvtRange: Um intervalo de dados para o pivô.
  • Last_Row e Last_Col: Última linha e coluna preenchidas na folha de dados (DSheet).
  • Sht1: Esta variável é uma variante.

3. Suprimir avisos e mensagens

Erros, avisos e mensagens desnecessários tornam seus códigos VBA mais lentos. Ao suprimir essas mensagens, você pode acelerar consideravelmente o processo.

Use o seguinte código:

Sobre Erro Continuar Próximo

Com Aplicativo
.DisplayAlerts = Falso
.ScreenUpdating = Falso
FimCom

Onde:

  • Ao continuar com erro, a seguir: Esta cláusula suprime quaisquer erros de tempo de execução.
  • Aplicativo: A aplicação refere-se ao MS Excel.
  • Exibir alertas: A propriedade DisplayAlerts define se os alertas devem ser exibidos.
  • Atualização de tela: Esta propriedade define se as alterações devem ser atualizadas em tempo real ou somente após o término da execução do código.

Quando esse código é executado, ele suprime todos os alertas, avisos e mensagens que o Excel mostraria de outra forma. Você pode desativar os parâmetros DisplayAlerts e ScreenUpdating definindo seus valores como Falso.

No final do código, você pode ativá-los novamente definindo o valor como Verdadeiro.

4. Excluir qualquer planilha dinâmica existente

Para criar uma nova tabela dinâmica, você tem duas opções. Em primeiro lugar, exclua a planilha dinâmica existente e use o VBA para criar uma nova planilha para armazenar a dinâmica. Como alternativa, você pode usar uma planilha existente para manter o pivô.

Neste guia, vamos criar uma nova planilha dinâmica para armazenar a tabela dinâmica.

O para cada loop percorre cada planilha dentro da pasta de trabalho e armazena o nome da planilha dentro do sht1 variável. Você pode usar qualquer nome de variável (sht1) para conter o nome da planilha. O loop percorre todas as planilhas da pasta de trabalho atual, procurando uma com o nome específico (Pivô).

Quando o nome da folha corresponder, ele exclui a folha e move para a próxima folha. Depois que o código verifica todas as planilhas, ele sai do loop e passa para a próxima parte do código, que adiciona uma nova planilha, Pivô.

Veja como você pode fazer isso:

ParaCadasht1EmPasta de trabalho ativa.Fichas de trabalho
Se sht1.Name = "Pivô" Então
sht1.Excluir
FimSe
Próximo sht1

Fichas de trabalho. Adicionar. Nome = "Pivô"

5. Definir fonte de dados e planilhas dinâmicas

É essencial criar variáveis ​​para armazenar as referências das planilhas Pivot e Data. Eles funcionam como atalhos, aos quais você pode fazer referência no restante do código.

Defina PSheet = Planilhas("Pivô")
Defina DSheet = Planilhas("Dados")

6. Identifique a última linha e coluna usadas

Essa parte do código funciona dinamicamente, pois dimensiona a última linha e coluna preenchidas nos dados.

Última_Linha = DSheet. Células (Linhas. Count, 1).End (xlUp).Row
Last_Col = DSheet. Células (1, Colunas. Count).End (xlToLeft).Coluna
Definir PvtRange = DSheet. Células(1, 1).Resize (Last_Row, Last_Col)

Onde:

  • Última fila: Variável para armazenar o último número de linha preenchido, ou seja, 9995
  • Última_coluna: Variável para armazenar o último número de coluna preenchido, ou seja, 21
  • PvtRange: PvtRange faz referência a todo o intervalo de dados para o pivô

7. Criar um Cache Dinâmico e uma Tabela Dinâmica

Um cache dinâmico contém a tabela dinâmica; portanto, você precisa criar um cache antes de criar uma tabela dinâmica. Você deve usar as referências de sintaxe do VBA para fazer o cache dinâmico dentro da planilha dinâmica.

Ao fazer referência ao cache dinâmico, você precisa criar uma tabela dinâmica. Como parte da tabela dinâmica, você pode definir a planilha, a referência da célula e o nome da tabela dinâmica.

Definir PvtCache = ActiveWorkbook. PivotCaches. Create (SourceType:=xlDatabase, SourceData:=PvtRange).CreatePivotTable (TableDestination:=PSheet. Células (2, 2), TableName:="MUODemoTable")
Definir PvtTable = PvtCache. CreatePivotTable (TableDestination:=PSheet. Células (1, 1), TableName:="MUODemoTable")

Onde:

  • Pasta de trabalho ativa: A pasta de trabalho atual onde você tem a planilha de dados e dinâmica.
  • PivotCaches. Criar: Sintaxe padrão para criar um cache dinâmico.
  • Tipo de fonte: Como você tem os dados na pasta de trabalho, pode defini-los como xlDatabase. Algumas outras opções incluem xlConsolidação, xlExterno, ou xlPivotTable.
  • SourceData: Você pode fazer referência ao intervalo dinâmico anterior como os dados de origem.
  • Criar tabela dinâmica: Comando padrão para criar a tabela dinâmica.
  • MesaDestino: Você precisa especificar as referências de planilha e célula onde deseja criar o pivô.
  • Nome da tabela: Especifique um nome de tabela dinâmica.
  • Criar tabela dinâmica: Comando padrão para criar a tabela dinâmica dentro do cache dinâmico.

8. Inserir linhas, colunas, filtros e valores

Como a tabela dinâmica está pronta, você precisa começar a adicionar os parâmetros nos filtros, linhas, colunas e valores de agregação. Você pode usar o VBA campos dinâmicos comando para começar a declarar os detalhes.

Para adicionar valores de filtro:

Com ActiveSheet. Tabelas Dinâmicas("MUODemoTable").PivotFields("Região")
.Orientation = xlPageField
FimCom

Para adicionar valores de linha:

Com ActiveSheet. Tabelas Dinâmicas("MUODemoTable").PivotFields("Subcategoria")
.Orientation = xlRowField
FimCom

Para adicionar valores de coluna:

Com ActiveSheet. Tabelas Dinâmicas("MUODemoTable").PivotFields("Estado")
.Orientation = xlColumnField
FimCom

Para adicionar valores de agregação:

Com ActiveSheet. Tabelas Dinâmicas("MUODemoTable").PivotFields("Vendas")
.Orientation = xlDataField
.Função = xlSoma
FimCom

É essencial observar que você deve fazer referência à planilha ativa (planilha dinâmica), seguida do nome da tabela dinâmica e do nome da variável. Quando precisar adicionar o(s) filtro(s), linha(s) e coluna(s), você pode alternar entre várias sintaxes, que incluem o seguinte:

  • xlPageField: Para adicionar filtros.
  • xlRowField: Para adicionar linhas.
  • xlRowField: Para adicionar colunas.

Finalmente, você pode usar o xlDataField comando para calcular as agregações de valor. Você pode usar outras funções de agregação como xlSum, xlAverage, xlCount, xlMax, xlMin e xlProduct.

9. Executando o código VBA do Excel para criar pivôs automáticos

Finalmente, quando todo o programa estiver pronto, você pode executá-lo pressionando F5 ou clicando no jogar botão. Ao voltar para a planilha dinâmica em sua pasta de trabalho, você verá que uma nova tabela dinâmica está pronta para ser revisada.

Se você quiser ver uma execução passo a passo de como o comando de código é executado linha por linha, você pode navegar até o editor de código e pressionar F8 várias vezes. Dessa forma, você pode ver como cada linha de código funciona e como o VBA cria seus pivôs automaticamente.

Aprendendo a codificar tabelas dinâmicas automaticamente

Os pivôs não estão restritos apenas ao MS Excel. Linguagens de programação como Python permitem criar pivôs otimizados com apenas algumas linhas de código.

A otimização de dados não pode ser mais fácil do que isso. Você pode efetivamente escolher seus comandos em Python e realizar uma estrutura dinâmica similar ao Excel com facilidade.