Página 1 de 1

Ajustar Macro para ordenar

Enviado: 14 Dez 2020 às 17:29
por LeoHenrique
Boa tarde a todos !

Segue em anexo, o modelo que estou tentando acertar....
A macro coloca em ordem decrescente a base 1, porém quando substituo os valores da base 1 pela base 2, a macro não considera todas as linhas, apenas até a linha do cliente "número" 20. Alguém pode ajudar ?

Obrigado desde já.

Re: Ajustar Macro para ordenar

Enviado: 14 Dez 2020 às 18:26
por osvaldomp
Experimente:
Código: Selecionar todos
Sub OrdenaDados()
 Dim LR As Long
  LR = Cells(Rows.Count, 4).End(3).Row
  With ActiveSheet.Sort
   .SortFields.Clear
   .SortFields.Add2 Key:=Range("I6:I" & LR), SortOn:=xlSortOnValues, Order:=xlDescending
   .SortFields.Add2 Key:=Range("H6:H" & LR), SortOn:=xlSortOnValues, Order:=xlDescending
   .SortFields.Add2 Key:=Range("G6:G" & LR), SortOn:=xlSortOnValues, Order:=xlDescending
   .SortFields.Add2 Key:=Range("F6:F" & LR), SortOn:=xlSortOnValues, Order:=xlDescending
   .SortFields.Add2 Key:=Range("E6:E" & LR), SortOn:=xlSortOnValues, Order:=xlDescending
   .SetRange Range("D6:I" & LR)
   .Header = xlNo
   .MatchCase = False
   .Orientation = xlTopToBottom
   .SortMethod = xlPinYin
   .Apply
  End With
End Sub

Re: Ajustar Macro para ordenar

Enviado: 15 Dez 2020 às 08:40
por LeoHenrique
Muito obrigado novamente Osvaldo !! Sempre trazendo códigos funcionais !!!
Top demais !!!
Se você montar um curso de fórmulas avançadas em VBA eu compraria na hora!!!
Abraço

Re: Ajustar Macro para ordenar

Enviado: 16 Dez 2020 às 17:13
por LeoHenrique
Boa tarde Osvaldo !

Poderia por favor, para meu aprendizado me explicar a linha abaixo ? Pela lógica localizei que o número 4 refere-se á coluna 4, mas por que após o "End" há o número "3" ?

LR = Cells(Rows.Count, 4).End(3).Row

Re: Ajustar Macro para ordenar

Enviado: 16 Dez 2020 às 18:06
por osvaldomp
LR = Cells(Rows.Count, 4).End(3).Row

Isso mesmo, o comando acima busca a última linha com conteúdo na coluna D, e o número daquela linha é atribuído à variável LR (Last Row). Eu optei pela coluna D mas poderia ser em qualquer outra no intervalo D:I.

A expressão Cells(Rows.Count, 4) ou Cells(Rows.Count, "D") ~~~> equivale no XL 2003 a selecionar a célula D65536 e a partir do XL 2007 a célula D1048576, ou seja, Rows.Count funciona nas duas versões e por isso é mais consistente do que utilizar o número da última linha da planilha.

Daí, a partir daquela célula, a expressão End(3) ou End(xlUp) corresponde a apertar a tecla End seguida da setinha para cima.

As equivalências simplificadas abaixo foram sugeridas por um estagiário da MS : :)
(xlToLeft) ~~~> formada por 8 caracteres, pode também ser escrita como (1) ~~~> formada por apenas 1 carácter
(xlToRight) ~~~> pode ser também (2)
(xlUp) ~~~> pode ser também (3)
(xlDown) ~~~> pode ser também (4)

Re: Ajustar Macro para ordenar

Enviado: 17 Dez 2020 às 07:41
por LeoHenrique
Muito obrigado novamente Osvaldo !!! Top demais !!
Por compartilhar conhecimento !! Abraço