Página 1 de 1

Ordenar números pelas unidades

Enviado: 14 Dez 2021 às 23:30
por Domingsp
Olá, na planilha anexada gostaria de ordenar os números de C a K segundo os algarismos das unidades, os algarismos mais à direita. Na faixa de M a U estão os números ordenados como preciso.
Desde já, obrigado.
EXEMPLO.xlsm

Re: Ordenar números pelas unidades

Enviado: 15 Dez 2021 às 08:51
por osvaldomp
Olá, @Domingsp .

Experimente:
Código: Selecionar todos
Sub OrdenaNúmeros()
 Application.ScreenUpdating = False
 [C3:K3] = "=RIGHT(C2,1)"
 [C4:K4] = "=MID(C2,2,1)"
 [C3:K4].Value = [C3:K4].Value
 With ActiveSheet
  .Sort.SortFields.Add2 Key:=Range("C3:K3")
  .Sort.SortFields.Add2 Key:=Range("C4:K4")
   With .Sort
    .SetRange Range("C2:K4")
    .Orientation = xlLeftToRight
    .Apply
   End With
 End With
 [C3:K4] = ""
End Sub

Re: Ordenar números pelas unidades

Enviado: 15 Dez 2021 às 11:51
por Domingsp
osvaldomp, obrigado por ajudar. Mas:
1) conforme o exemplo, a macro deveria apresentar o resultado na faixa a partir de M2:U2. Com o seu código o resultado está saindo em C3;
2) o resultado deve conter os números inteiros. Seu código está apresentando somente as unidades;
3) a macro esta apresentando erro de tempo de execução na linha:
.Sort.SortFields.Add2 Key:=Range("C3:K3")

Anexei o arquivo Exemplo com um botão de acionamento.
EXEMPLO.xlsm

Re: Ordenar números pelas unidades

Enviado: 15 Dez 2021 às 15:28
por osvaldomp
Domingsp escreveu: 15 Dez 2021 às 11:51 1) conforme o exemplo, a macro deveria apresentar o resultado na faixa a partir de M2:U2.
Não procede. Você escreveu no post anterior "Na faixa de M a U estão os números ordenados como preciso. "
O termo "como" indica modo, não indica lugar. Assim, o que você escreveu indica a forma, o modo que você quer os números após a ordenação.
Para indicar também o lugar deveria escrever ~~~> "em M2:U2 como e onde desejo o resultado."

Com o seu código o resultado está saindo em C3;
Sim, se não for indicado o lugar é porque o resultado será no próprio local em que estão os dados.

2) o resultado deve conter os números inteiros. Seu código está apresentando somente as unidades;
Não procede. Se o código travou a execução, como você relatou, possivelmente você erradamente interpretou que C3:K4 continha o resultado final. O código utiliza o intervalo C3:K4 como intervalo auxiliar, que ao final é deletado.

3) a macro esta apresentando erro de tempo de execução na linha:
.Sort.SortFields.Add2 Key:=Range("C3:K3")
Não consegui reproduzir aqui o erro. Abri o seu arquivo, rodei o código que você instalou e foi de boa.
#
O código abaixo irá colocar o resultado em M2:U2.
Código: Selecionar todos
Private Sub CommandButton1_Click()
 Application.ScreenUpdating = False
 [C2:K2].Copy [M2]
 [M3:U3] = "=RIGHT(M2,1)"
 [M4:U4] = "=MID(M2,2,1)"
 [M3:U4].Value = [M3:U4].Value
 With ActiveSheet
  .Sort.SortFields.Add2 Key:=Range("M3:U3")
  .Sort.SortFields.Add2 Key:=Range("M4:U4")
   With .Sort
    .SetRange Range("M2:U4")
    .Orientation = xlLeftToRight
    .Apply
   End With
 End With
 [M3:U4] = ""
End Sub




Re: Ordenar números pelas unidades

Enviado: 15 Dez 2021 às 17:20
por Domingsp
Continua não resolvido. Eu preciso dos números ordenados pelas unidades. E inteiros, conforme está exemplificado no arquivo do primeiro post.
O erro de execução permanece. Não alterei uma letra do código, apenas o coloquei na Private Sub do botão.
Postei os prints de como aparece aqui. De toda forma, obrigado pela atenção e desculpe algum transtorno.

Imagem
Imagem
Imagem
Imagem

Re: Ordenar números pelas unidades

Enviado: 15 Dez 2021 às 17:34
por osvaldomp
Qual é a versão do seu Excel?

Pesquisando aqui, o método Add2 foi introduzido a partir da versão 2016.

Se a sua versão for anterior, então tente após excluir o número 2.

Nas duas ocorrências altere de Add2 para Add.

Re: Ordenar números pelas unidades

Enviado: 15 Dez 2021 às 19:45
por Domingsp
Minha versão é 2010. Era isso mesmo. Alterei o Add2 para Add e resolveu. 👍👍