Excel VBA – Alterar campos de tabela dinâmica para Soma
Neste artigo vamos apresenta um código para alterar todos os campos de valor de uma tabela dinâmica para a função SOMA.
Este procedimento foi criado porque me deparei com uma planilha em que haviam 24 colunas, uma para cada mês com relação ao valor da venda e mais 12 para a comissão da filial. Estas colunas deveriam conter portanto a soma das vendas e a soma das comissões.
Quando criamos uma tabela dinâmica, todos os campos de valor são criados com o tipo contagem como Default, e infelizmente não tem como mudar este padrão.
Sendo assim, este procedimento teria que ser feito manualmente para cada uma das colunas, o que em um primeiro momento, está OK, mas além disso ainda é necessário configurar cada uma das colunas para o formato Decimal, o que já cria mais uma tarefa manual desnecessária.
Para esta tarefa criei portanto o seguinte código VBA Excel. Ele altera todos os campos de valor de uma tabela dinâmica para a função SOMA.
Sub lsCamposTDSoma() On Error GoTo TratarErro Dim PvtTbl As PivotTable Dim pvtFld As PivotField Dim strPvtFld As String Set PvtTbl = ActiveSheet.PivotTables(ActiveCell.PivotTable.Name) For Each pvtFld In PvtTbl.DataFields pvtFld.Function = xlSum pvtFld.NumberFormat = "#,##0.00" Next Sair: Exit Sub TratarErro: MsgBox "Não existem campos de valor, ou não foi selecionada uma tabela dinâmica!" GoTo Sair End Sub
Para funcionar é muito simples. Basta clicar sobre a tabela dinâmica que gostaria de formatar e executar a macro lsCamposTDSoma, lembrando que para utilizar funções VBA em todas as planilhas você deve seguir os procedimentos descritos neste artigo:
Habilitando a guia desenvolvedor e copiando procedimentos VBA da Internet
Assim que for executada a macro, todos os campos de valor serão então alterados para o tipo SOMA, conforme abaixo:
Então é isso, no próximo artigo tratarei mais de como manipular tabelas dinâmicas utilizando VBA.[saiba_mais]
Abraço
Marcos Rieper
Curso Excel Completo – Do Básico ao VBA
Quer aprender Excel do Básico, passando pela Avançado e chegando no VBA? Clique na imagem abaixo: