- Usando GetPivotData para obter um valor
- Criação de uma tabela dinâmica em uma folha
- Criação de uma tabela dinâmica em uma nova folha
- Adicionando Campos à Tabela Dinâmica
- Alterando o Layout do Relatório da Tabela Dinâmica
- Excluindo uma Tabela Dinâmica
- Formate todas as tabelas dinâmicas em uma pasta de trabalho
- Removendo Campos de uma Tabela Dinâmica
- Criação de um filtro
- Atualizando sua tabela dinâmica
Este tutorial demonstrará como trabalhar com tabelas dinâmicas usando VBA.
As tabelas dinâmicas são ferramentas de resumo de dados que você pode usar para extrair ideias e resumos importantes de seus dados. Vejamos um exemplo: temos um conjunto de dados de origem nas células A1: D21 contendo os detalhes dos produtos vendidos, mostrados abaixo:
Usando GetPivotData para obter um valor
Suponha que você tenha uma tabela dinâmica chamada Tabela Dinâmica1 com Vendas no campo Valores / Dados, Produto como o campo Linhas e Região como o campo Colunas. Você pode usar o método PivotTable.GetPivotData para retornar valores de tabelas dinâmicas.
O código a seguir retornará $ 1.130,00 (o total de vendas para a Região Leste) da Tabela Dinâmica:
1 | MsgBox ActiveCell.PivotTable.GetPivotData ("Vendas", "Região", "Leste") |
Nesse caso, Vendas é o “DataField”, “Field1” é a Região e “Item1” é o Leste.
O código a seguir retornará $ 980 (as vendas totais do Produto ABC na Região Norte) da Tabela Dinâmica:
1 | MsgBox ActiveCell.PivotTable.GetPivotData ("Vendas", "Produto", "ABC", "Região", "Norte") |
Neste caso, Vendas é o “Campo de Dados”, “Campo1” é Produto, “Item1” é ABC, “Campo2” é Região e “Item2” é Norte.
Você também pode incluir mais de 2 campos.
A sintaxe para GetPivotData é:
GetPivotData (Campo de dados, Field1, Item 1, Field2, Item 2… ) Onde:
Parâmetro | Descrição |
---|---|
Campo de dados | Campo de dados como vendas, quantidade etc. que contém números. |
Campo 1 | Nome de um campo de coluna ou linha na tabela. |
Item 1 | Nome de um item no campo 1 (opcional). |
Campo 2 | Nome de um campo de coluna ou linha na tabela (opcional). |
Item 2 | Nome de um item no campo 2 (opcional). |
Criação de uma tabela dinâmica em uma folha
Para criar uma Tabela Dinâmica com base no intervalo de dados acima, na célula J2 na Planilha1 da pasta de trabalho Ativa, usaríamos o seguinte código:
1234567891011 | Planilhas ("Folha1"). Células (1, 1) .SelecionarActiveWorkbook.PivotCaches.Create (SourceType: = xlDatabase, SourceData: = _"Planilha1! R1C1: R21C4", Versão: = xlPivotTableVersion15) .CreatePivotTable _TableDestination: = "Sheet1! R2C10", TableName: = "PivotTable1", DefaultVersion _: = xlPivotTableVersion15Folhas ("Folha1"). Selecione |
O resultado é:
Criação de uma tabela dinâmica em uma nova folha
Para criar uma Tabela Dinâmica com base no intervalo de dados acima, em uma nova planilha, da pasta de trabalho ativa, usaríamos o seguinte código:
12345678910111213 | Planilhas ("Folha1"). Células (1, 1) .SelecionarSheets.AddActiveWorkbook.PivotCaches.Create (SourceType: = xlDatabase, SourceData: = _"Planilha1! R1C1: R21C4", Versão: = xlPivotTableVersion15) .CreatePivotTable _TableDestination: = "Sheet2! R3C1", TableName: = "PivotTable1", DefaultVersion _: = xlPivotTableVersion15Folhas ("Folha2"). Selecione |
Adicionando Campos à Tabela Dinâmica
Você pode adicionar campos à Tabela Dinâmica recém-criada chamada Tabela Dinâmica1 com base no intervalo de dados acima. Nota: A planilha que contém sua Tabela Dinâmica precisa ser a Planilha Ativa.
Para adicionar Produto ao Campo de Linhas, você usaria o seguinte código:
123 | ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Produto"). Orientação = xlRowFieldActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Produto"). Posição = 1 |
Para adicionar Região ao Campo de Colunas, você usaria o seguinte código:
123 | ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Região"). Orientação = xlColumnFieldActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Região"). Posição = 1 |
Para adicionar vendas à seção de valores com o formato do número da moeda, você usaria o seguinte código:
123456789 | ActiveSheet.PivotTables ("PivotTable1"). AddDataField ActiveSheet.PivotTables (_"Tabela Dinâmica1"). Campos Dinâmicos ("Vendas"), "Soma das Vendas", xlSumCom ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Soma das vendas").NumberFormat = "$ #, ## 0.00"Terminar com |
O resultado é:
Alterando o Layout do Relatório da Tabela Dinâmica
Você pode alterar o Layout do Relatório de sua Tabela Dinâmica. O código a seguir mudará o layout do relatório de sua tabela dinâmica para o formato tabular:
1 | ActiveSheet.PivotTables ("PivotTable1"). TableStyle2 = "PivotStyleLight18" |
Excluindo uma Tabela Dinâmica
Você pode excluir uma Tabela Dinâmica usando o VBA. O código a seguir excluirá a Tabela Dinâmica chamada Tabela Dinâmica1 na Planilha Ativa:
12 | ActiveSheet.PivotTables ("PivotTable1"). PivotSelect "", xlDataAndLabel, TrueSelection.ClearContents |
Formate todas as tabelas dinâmicas em uma pasta de trabalho
Você pode formatar todas as tabelas dinâmicas em uma pasta de trabalho usando o VBA. O código a seguir usa uma estrutura de loop para percorrer todas as planilhas de uma pasta de trabalho e excluir todas as tabelas dinâmicas da pasta de trabalho:
12345678910111213 | Sub FormattingAllThePivotTablesInAWorkbook ()Dim wks como planilhaDim wb como pasta de trabalhoDefinir wb = ActiveWorkbookDim pt como tabela dinâmicaPara cada semana em wb. FolhasPara cada ponto em wks.PivotTablespt.TableStyle2 = "PivotStyleLight15"Próximo ptPróximas semanasEnd Sub |
Para saber mais sobre como usar Loops no VBA, clique aqui.
Removendo Campos de uma Tabela Dinâmica
Você pode remover campos em uma Tabela Dinâmica usando o VBA. O código a seguir removerá o campo Produto na seção Linhas de uma Tabela Dinâmica chamada Tabela Dinâmica1 na Planilha Ativa:
12 | ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Produto"). Orientação = _xlHidden |
Criação de um filtro
Uma Tabela Dinâmica chamada Tabela Dinâmica1 foi criada com Produto na seção Linhas e Vendas na Seção Valores. Você também pode criar um filtro para sua tabela dinâmica usando o VBA. O código a seguir criará um filtro com base na região na seção Filtros:
123 | ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Region"). Orientation = xlPageFieldActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Região"). Posição = 1 |
Para filtrar sua Tabela Dinâmica com base em um Único Item de Relatório, neste caso a região Leste, você usaria o seguinte código:
12345 | ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Region"). ClearAllFiltersActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Região"). CurrentPage = _"Leste" |
Digamos que você queira filtrar sua Tabela Dinâmica com base em várias regiões, neste caso Leste e Norte, você usaria o seguinte código:
1234567891011121314 | ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Region"). Orientation = xlPageFieldActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Região"). Posição = 1ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Região"). _EnableMultiplePageItems = TrueCom ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Região").PivotItems ("Sul"). Visível = Falso.PivotItems ("Oeste"). Visível = FalsoTerminar com |
Atualizando sua tabela dinâmica
Você pode atualizar sua Tabela Dinâmica no VBA. Você usaria o seguinte código para atualizar uma tabela específica chamada PivotTable1 no VBA:
1 | ActiveSheet.PivotTables ("PivotTable1"). PivotCache.Refresh |