Como classificar colunas na tabela dinâmica?

Objetivo: Como classificar uma tabela dinâmica automaticamente no Excel.

Como classificar colunas na tabela dinâmica?

A tabela dinâmica no Excel é uma poderosa ferramenta de análise.

Com ela o usuário pode unir grandes massas de dados, criando os seus próprios relatórios com os campos desta base, inclusive criando cálculos. Tudo muito rápido e prático.

No entanto uma das funcionalidades desta ferramenta não é muito prática. A classificação de dados nas tabelas dinâmicas podem ser bastante trabalhosas, principalmente quando se trata de valores.

Para se classificar os dados em uma tabela dinâmica, basta você clicar no botão sobre a coluna e clicar em classificar:

Como classificar colunas na tabela dinâmica?

O problema consiste em quando queremos que a tabela dinâmica seja organizada por um determinado campo e este não é o primeiro campo, sendo necessário que todos os campos sejam classificados por este. Para isto deve-se clicar em uma coluna e clicar no botão de classificação e na opção Mais Opções de Classificação, selecionar se será classificado de forma crescente ou decrescente e o campo.

Como classificar colunas na tabela dinâmica?

Esta operação tem que ser repetida para todos os campos da esquerda para a direita até o campo definido. O que gera um grande trabalho.

Os códigos VBA Excel criados abaixo realizam a classificação de forma crescente ou de forma decrescente, bastando clicar no título da coluna da tabela Excel e clicar no botão Classificar.

Como classificar colunas na tabela dinâmica?

Para utilizar o código siga o passo-a-passo deste artigo: Habilitar a guia desenvolvedor no Excel e copiar códigos VBA da internet.

Sub lsClassificarTabelaDinamicaMaiorMenor()
 
'Baseado no site chandoo.org
'   Programmer:     Jeff Weir
'   Contact:         or 

'Formata a tabela dinâmica com sua formatação preferida, formatação default

'Configurações realizadas
'   1.  Mostrar de forma tabulada os dados
'   2.  Ligar a opção de repetir linhas
'   3.  Desliga os subtotais
'   4.  Liga o total final de coluna
'   5.  Desliga a opção de ajustar a tabela dinâmica
'   7.  Desliga a opção de salvar os dados da tabela dinâmica como arquivo
'   8.  Formata os campos de soma de valor no formato decimal separado por ponto
'   9.  Ajusta as colunas da tabela dinâmica
'   10. Retira do nome dos valores as descrições Contagem, Soma

    Dim pc As PivotCache
    Dim pf As PivotField
    Dim pt As PivotTable
    Dim lo As ListObject
    Dim rng As Range
    Dim strLabel As String
    Dim strFormat As String
    Dim i As Long
    Dim wksSource As Worksheet
    Dim lRange As String
 
 
    'Verifica se estamos lidando com uma versão do Excel que suporta ListObjects
    'Versões superiores ao Excel 2007
    If Application.Version >= 14 Then
 
 
        On Error Resume Next
        Set pt = ActiveCell.PivotTable
        On Error GoTo errhandler

        If pt Is Nothing Then
            MsgBox "Selecione o campo da tabela dinâmica pelo qual quer classificar!"
            GoTo errhandler
        End If
        
        pt.PivotCache.Refresh
        
        lCampo = pt.PivotFields(ActiveCell.Value).Name

        lRange = ActiveCell.Address

        'Limpa a classificação da tabela
        With pt
            If ActiveCell.CurrentRegion.Cells.Count > 1 Then
                For i = 1 To .PivotFields.Count - .DataFields.Count
                    Set pf = .PivotFields(i)
                    With pf
                        .AutoSort xlManual, pf.SourceName
                        On Error Resume Next
                        On Error GoTo errhandler
                    End With
                Next i
            End If
        End With

        'Classifica a tabela pelo campo desejado
        With pt
            If ActiveCell.CurrentRegion.Cells.Count > 1 Then
                For i = .PivotFields.Count - .DataFields.Count - 1 To 1 Step -1
                    Set pf = .PivotFields(i)
                    With pf
                        If pf.Name <> "Values" Then
                            .AutoSort xlDescending, lCampo
                            On Error Resume Next
                            On Error GoTo errhandler
                        End If
                    End With
                Next i
            End If
        End With
 
        'Calcula e atualiza a tela
         With Application
            .ScreenUpdating = True
            .EnableEvents = True
            .Calculation = xlAutomatic
        End With
 
        With pt
            .ManualUpdate = False
            .TableRange2.Select
        End With
 
        pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
 
        ActiveCell.CurrentRegion.EntireColumn.AutoFit
 
        Range(lRange).Select
 
    'Tratamento de erros
    Err.Clear
errhandler:
            If Err.Number > 0 Then
                With Application
                    .ScreenUpdating = True
                    .EnableEvents = True
                    .Calculation = xlAutomatic
                End With
                If Err.Number = 1004 Then
                    MsgBox "Selecione o cabeçalho do campo da tabela dinâmica que quer classificar!"
                Else
                    MsgBox "Atenção, ocorreu um erro: Error#" & Err.Number & vbCrLf & Err.Description _
                             , vbCritical, "Error", Err.HelpFile, Err.HelpContext
                End If
            End If
    End If
 
End Sub

Sub lsClassificarTabelaDinamicaMenorMaior()
 
'Baseado no site chandoo.org
'   Programmer:     Jeff Weir
'   Contact:         or 

'Formata a tabela dinâmica com sua formatação preferida, formatação default

'Configurações realizadas
'   1.  Mostrar de forma tabulada os dados
'   2.  Ligar a opção de repetir linhas
'   3.  Desliga os subtotais
'   4.  Liga o total final de coluna
'   5.  Desliga a opção de ajustar a tabela dinâmica
'   7.  Desliga a opção de salvar os dados da tabela dinâmica como arquivo
'   8.  Formata os campos de soma de valor no formato decimal separado por ponto
'   9.  Ajusta as colunas da tabela dinâmica
'   10. Retira do nome dos valores as descrições Contagem, Soma

    Dim pc As PivotCache
    Dim pf As PivotField
    Dim pt As PivotTable
    Dim lo As ListObject
    Dim rng As Range
    Dim strLabel As String
    Dim strFormat As String
    Dim i As Long
    Dim wksSource As Worksheet
    Dim lRange As String
 
 
    'Verifica se estamos lidando com uma versão do Excel que suporta ListObjects
    'Versões superiores ao Excel 2007
    If Application.Version >= 14 Then
 
 
        On Error Resume Next
        Set pt = ActiveCell.PivotTable
        On Error GoTo errhandler

        If pt Is Nothing Then
            MsgBox "Selecione o campo da tabela dinâmica pelo qual quer classificar!"
            GoTo errhandler
        End If
        
        pt.PivotCache.Refresh
        
        lCampo = pt.PivotFields(ActiveCell.Value).Name
        
        lRange = ActiveCell.Address

        'Limpa a classificação da tabela
        With pt
            If ActiveCell.CurrentRegion.Cells.Count > 1 Then
                For i = 1 To .PivotFields.Count - .DataFields.Count
                    Set pf = .PivotFields(i)
                    With pf
                        .AutoSort xlManual, pf.SourceName
                        On Error Resume Next
                        On Error GoTo errhandler
                    End With
                Next i
            End If
        End With

        'Classifica a tabela pelo campo desejado
        With pt
            If ActiveCell.CurrentRegion.Cells.Count > 1 Then
                For i = .PivotFields.Count - .DataFields.Count - 1 To 1 Step -1
                    Set pf = .PivotFields(i)
                    With pf
                        If pf.Name  "Values" Then
                            .AutoSort xlAscending, lCampo
                            On Error Resume Next
                            On Error GoTo errhandler
                        End If
                    End With
                Next i
            End If
        End With
 
        'Calcula e atualiza a tela
         With Application
            .ScreenUpdating = True
            .EnableEvents = True
            .Calculation = xlAutomatic
        End With
 
        With pt
            .ManualUpdate = False
            .TableRange2.Select
        End With
 
        pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
 
        ActiveCell.CurrentRegion.EntireColumn.AutoFit
 
        Range(lRange).Select
 
    'Tratamento de erros
    Err.Clear
errhandler:
            If Err.Number > 0 Then
                With Application
                    .ScreenUpdating = True
                    .EnableEvents = True
                    .Calculation = xlAutomatic
                End With
                If Err.Number = 1004 Then
                    MsgBox "Selecione o cabeçalho do campo da tabela dinâmica que quer classificar!"
                Else
                    MsgBox "Atenção, ocorreu um erro: Error#" & Err.Number & vbCrLf & Err.Description _
                             , vbCritical, "Error", Err.HelpFile, Err.HelpContext
                End If
            End If
    End If
 
End Sub

Como classificar colunas na tabela dinâmica?

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:

Como classificar colunas na tabela dinâmica?

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:

Como classificar colunas na tabela dinâmica?

Como classificar uma coluna da tabela dinâmica?

Em uma Tabela Dinâmica, clique na pequena seta ao lado das células Rótulos de Linha e Rótulos de Coluna. Clique em um campo na linha ou coluna que você quer classificar. em Rótulos de Linha ou Rótulos de Coluna e clique na opção de classificação desejada.

Como classificar uma tabela dinâmica?

Na Tabela Dinâmica, clique em qualquer campo na coluna que contenha os itens que você deseja classificar. Na guia Dados, clique em Classificare clique na ordem de classificação que você deseja.

Como filtrar colunas na tabela dinâmica?

Na Tabela Dinâmica, selecione um ou mais itens no campo que você deseja filtrar por seleção. Clique com o botão direito na seleção e clique em Filtrar.

Como colocar em ordem tabela dinâmica?

Não é possível arrastar os itens exibidos na área de Valores da Lista de Campos da Tabela Dinâmica. Clique em Crescente (de A a Z) por ou Decrescente (de Z a A) por e escolha o campo que você quer classificar.