Classificação automática no Excel

Procv Excel em planilhas diferentes usando Indireto Excel
Procv Excel em planilhas diferentes usando Indireto Excel
31 de julho de 2012
Controle de etapas de projetos em Excel e VBA
Controle de etapas de projetos em Excel e VBA
4 de agosto de 2012

Classificação automática no Excel

Objetivo: Demonstrar como realizar o filtro automático ao dar um duplo clique em uma coluna utilizando VBA Excel.

Introdução

Muitas vezes utilizamos uma planilha diariamente e temos que classificar os dados várias vezes, o que significa que você terá que realizar esta classificação pelo caminho natural do Excel de selecionar a planilha, clicar na guia Dados->Classificar e escolher a coluna.

Neste artigo foi criado um exemplo de como aliar o Excel e o VBA para realizar esta classificação automaticamente ao dar um duplo clique sobre a coluna que se deseja classificar.

Como foi feito

Foi inicialmente criada uma lista de dados Excel com os títulos descritos sobre cada uma das colunas.

Esta será a nossa lista de exemplo.

Após isso é necessário algum conhecimento de VBA para realizar a tarefa, mas o exemplo pode ser replicado para outras planilhas.

Foi criado então um evento de escuta da planilha intitulada “Lista”, que ficará aguardando o duplo clique do mouse e se o mesmo for realizado na primeira linha e se esta estiver preenchida com alguma palavra então o VBA irá desativar os eventos e chamar  oprocedimento VBA que realiza a classificação automática de dados.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Row = 1 And Target.Value  "" Then
        Application.EnableEvents = False
        lsClassificarAutomatico Target
        Application.EnableEvents = True
    End If
    Cancel = True
End Sub

Realizando a classificação automática com Excel e VBA

Para realizar a classificação automática foi criado o seguinte código VBA Excel que está com seu código devidamente comentado:

Sub lsClassificarAutomatico(ByVal vTarget As Range)

    Dim lUltimaLinahAtiva   As Long
    Dim lColuna             As String
    Dim lUltimaColuna       As String
    
    'Desabilita a atualização visual da tela
    Application.ScreenUpdating = False
       
    'Identifica a última coluna ativa
    lUltimaColuna = Left(Replace(Cells(1, Cells.Columns.Count).End(xlToLeft).Address, "$", ""), Len(Replace(Cells(1, Cells.Columns.Count).End(xlToLeft).Address, "$", "")) - 1)
    
    'Identifica a última linha ativa
    lUltimaLinhaAtiva = Worksheets(vTarget.Worksheet.Name).Cells(Worksheets(vTarget.Worksheet.Name).Rows.Count, vTarget.Column).End(xlUp).Row
    
    'Identifica a coluna clicada
    lColuna = Left(Replace(vTarget.Address, "$", ""), Len(Replace(vTarget.Address, "$", "")) - 1)
    
    'Seleciona a lista de dados
    Columns("A:" & lUltimaColuna).Select
    
    'Limpa os campos classificados
    ActiveWorkbook.Worksheets(vTarget.Worksheet.Name).Sort.SortFields.Clear
    
    'Realiza a nova classificação pela coluna selecionada
    ActiveWorkbook.Worksheets(vTarget.Worksheet.Name).Sort.SortFields.Add Key:=Range(lColuna & "2:" & lColuna & lUltimaLinhaAtiva) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets(vTarget.Worksheet.Name).Sort
        .SetRange Range("A:" & lUltimaColuna)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    vTarget.Select
    
    'Habilita a atualização visual da tela
    Application.ScreenUpdating = True
End Sub

Funcionamento

Ao dar o duplo clique na coluna que deseja classificar, o código VBA Excel que está aguardando que seja realizado o duplo clique na primeira coluna irá identificar esta ação e realizar a chamada ao procedimento lsClassificarAutomatico que por sua vez irá limpar a classificação atual e aplicar a nova classificação pela coluna selecionada.
[saiba_mais]

Você pode achar interessante também este outro artigo aonde os campos são tratados com auto filtros automáticos ao digitar:

http://guiadoexcel.com.br/planilha-com-filtro-automatico

Abraço

Marcos Rieper


Clique aqui e leia mais sobre Excel VBA. https://www.guiadoexcel.com.br/vba/ O Guia do Excel foi criado por Marcos Rieper e oferece artigos, dicas, tutoriais e modelos de planilhas prontas. Aqui você encontra tudo sobre Excel, seja de nível básico, intermediário,  avançado e VBA. O Guia do Excel oferece diversos materiais completamente gratuitos para download. Navegue em nosso site e confira! Conheça também a nossa Loja do Excel https://loja.guiadoexcel.com.br/
Cursos

Curso Excel Completo – Curso Excel Básico + Curso Excel Avançado – Acesso Vitalício

R$218,00 R$179,00

COMPRAR
Cursos

Curso Excel Master – Curso Excel Básico + Curso Excel Avançado + Curso VBA Excel + LP – Acesso Vitalício

R$357,00 R$249,00

COMPRAR
Cursos

Curso Excel PRO – Curso Excel Avançado + Curso VBA Excel + Lógica de programação – Acesso Vitalício

R$258,00 R$199,00

COMPRAR
Cursos

Curso Excel Web – Curso VBA Excel + Lógica de programação + Curso Web Scraping VBA- Acesso Vitalício

R$388,90 R$309,00

COMPRAR

1 Comentário

  1. raphael disse:

    Boa noite!

    Muito bom.. exatamente oque eu estava procurando.
    Muito Obrigado.
    Porem meu cabeçalho vai ate a linha 4 e o filtro esta trazendo as informações para a linha 2.
    Como faço para o filtro começar a preencher da linha 5 para baixo??

    Muto obrigado

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.