Notifications
Clear all

[Resolvido] Classificar a planilha personalizado através VBA

5 Posts
2 Usuários
1 Reactions
2,365 Visualizações
(@damiano)
Posts: 6
Active Member
Topic starter
 

Boa noite,

1) Quero classificar minha plan através VBA de MODO PERSONALIZADO pela coluna "A" na seguinte ordem/critérios:

Gen Ex, Gen Div, Gen Bda, Cel, Ten Cel, Maj, Cap, 1º Ten, 2º Ten, Asp Of, Cad, S Ten, 1º Sgt, 2º Sgt, 3º Sgt, Alu, Cb EP, TM, Cb EV, Sd EP, T1, Sd EV, T2.
2) Tentei por gravar macro e o problema foi que ao executar a macro:  1º Ten, 2º Ten, S Ten, ficam sempre no final da classificação - Não seguindo a ordem estabelecida.
3) No arquivo já tem 5 módulos onde tentei de várias maneiras mas sem sucesso, por erros em alguma linha do código.
Nota: utilizo o Range("A1").CurrentRegion para selecionar todo o conteúdo pois a planilha pode ter um número variado de linhas.
 
Postado : 11/02/2023 7:34 pm
Tags do Tópico
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Bem vindo ao Planilhando, @Damiano

Tente o seguinte:

Sub ClassificaçãoPorHierarquia()
  Dim ordemPatente As String
  ordemPatente = "Gen Ex,Gen Div,Gen Bda,Cel,Ten Cel,Maj,Cap,1º Ten,2º Ten,Asp Of,Cad,"
  ordemPatente = ordemPatente & "S Ten,1º Sgt,2º Sgt,3º Sgt,Alu,Cb EP,Cb EV,Sd EP,Sd EV"
  With Range("TabelaPED").ListObject.Sort
    .SortFields.Clear
    .SortFields.Add Key:=Range("TabelaPED[P_Grad]"), customOrder:=(ordemPatente), Order:=xlAscending
    .Header = xlGuess
    .Apply
  End With
End Sub

Postado por: @damiano

Nota: utilizo o Range("A1").CurrentRegion para selecionar todo o conteúdo pois a planilha pode ter um número variado de linhas.

Como seus dados estão numa Tabela (objeto ListObject), o próprio Excel "sabe" onde o range começa e termina, basta usar o nome da tabela.

 
Postado : 12/02/2023 4:19 am
(@damiano)
Posts: 6
Active Member
Topic starter
 

🤩 🤗 👍 👍 🍻  @edsonbr. Muito obrigado pela solução do problema, com a tabela contendo todas as patentes funcionou perfeitamente, contudo testei em uma tabela com algumas patentes e não classificou na sequência, como proceder para o código funcionar com as duas situações. reenvio o arquivo para análise. 

 
Postado : 23/02/2023 10:20 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Não classificou pq. as patentes ("1º Ten", "2º Ten" e "S Ten") foram digitadas com um espaço em branco sobrando no final do texto ("1º Ten ", "2º Ten " e "S Ten ").

Sugestão: use uma lista suspensa pra só escolher e não digitar as patentes.

 
Postado : 24/02/2023 4:47 pm
(@damiano)
Posts: 6
Active Member
Topic starter
 

@edsonbr Bom dia, corrigi e ficou certinho. Muito obrigado por responder e ter esse olhar atento que faz tudo mudar. Gratidão mestre!.

 
Postado : 15/03/2023 8:56 am
EdsonBR reacted