Jump to content

Macro para colocar as dezenas em ordem


Recommended Posts

Olá amigos estou precisando de uma macro ou formula que faça isto colocar as DZ em ordem do menor para o maior  Ex. 03    04    05    20    23    06    08    14    16    19  para  03    04    05    06    08    14    16    19    20    23.

 

Eu sei que existe o classificar, mas a questão é que são muitas linhas e ele só faz linha a linha.

Por enquanto obrigado.

 

 

  • Like 1
Link to comment
Share on other sites

Explicando Melhor

 

 

Coloca suas dezenas em desordem e acima delas enumere de 1 até a ultima. Usando a função Menor,selecione o intervalo de desordem e congele ele( Pressione F4), o segundo argumento é o indice, que será usado a linha que você enumerou ali em cima.

 

Qq avise

  • Like 2
Link to comment
Share on other sites

15 minutos atrás, Nanilinho disse:

Explicando Melhor

 

 

Coloca suas dezenas em desordem e acima delas enumere de 1 até a ultima. Usando a função Menor,selecione o intervalo de desordem e congele ele( Pressione F4), o segundo argumento é o indice, que será usado a linha que você enumerou ali em cima.

 

Qq avise

 

Obrigado Nanilinho, vamos ver se alguém aparece com uma formula também.

Link to comment
Share on other sites

20 minutos atrás, Nanilinho disse:

Explicando Melhor

 

 

Coloca suas dezenas em desordem e acima delas enumere de 1 até a ultima. Usando a função Menor,selecione o intervalo de desordem e congele ele( Pressione F4), o segundo argumento é o indice, que será usado a linha que você enumerou ali em cima.

 

Qq avise

 

@Nanilinho Por Favor, faça com esta linhas aqui para eu entender melhor quando a quantidade é maior, e muito obrigado pela ajuda.

 

07    19    01    10    13    18    22    09    12    24    04    08    14    20    23    03    06    16    17    21
07    11    25    01    10    18    22    05    12    15    24    04    08    14    20    03    06    16    17    21
07    11    19    25    10    13    18    05    09    12    15    24    04    08    20    23    03    16    17    21
07    11    19    25    01    10    13    18    22    05    09    15    04    08    14    23    03    06    16    21
02    19    25    13    18    22    05    12    15    24    04    08    14    20    23    03    06    16    17    21
02    11    25    01    10    13    18    22    05    09    12    15    04    08    20    23    03    06    17    21
02    11    19    25    01    10    18    22    05    09    12    15    24    04    14    20    23    03    06    16
02    07    25    01    10    13    18    22    05    09    12    15    24    04    08    14    23    03    16    17
02    07    19    25    01    10    18    05    09    15    24    04    08    14    20    23    06    16    17    21
02    07    11    25    10    13    18    22    09    12    15    24    08    14    20    23    06    16    17    21
02    07    11    19    01    13    18    22    09    12    15    24    04    08    14    20    23    03    16    21
02    07    11    19    01    10    13    18    05    09    12    15    24    04    08    14    03    06    17    21
02    07    11    19    25    10    13    22    05    09    12    15    04    14    20    03    06    16    17    21
02    07    11    19    25    01    13    22    05    09    12    24    04    08    14    20    23    06    17    21
02    07    11    19    25    01    10    13    22    12    15    24    04    08    23    03    06    16    17    21
02    07    11    19    25    01    10    13    18    22    05    12    24    14    20    23    03    16    17    21
02    07    11    19    25    01    10    13    18    22    05    09    15    24    08    20    03    06    16    17

 

 

Link to comment
Share on other sites

Caro CerealK,

 

O Nanilinho sugeriu algo similar ao seguinte passo a passo:

 

Imaginemos que suas linhas de análise se localizem a partir da célula [A2]. Sua última coluna ocupada será a [J].
Digite entre as células [L1:U1] números sequenciais de 1 a 10, deixando a coluna [K] livre para não misturar os conjuntos. Esses números serão nossos índices.
Na célula [L2], insira a fórmula: =menor($A2:$J2;L$1) (ou copie a fórmula ao lado).
Copie a célula L2, extenda seleção entre [M2:U2] e cole. Seu primeiro grupo estará ordenado.
Extenda seleção [L2:U2], copie, extenda abaixo para quantas mais linhas tiver de organizar, e cole.

 

Caso necessite utilizar os dados organizados em outra base de dados, copie e cole-os utilizando na área desejada:
[botão direito do mouse] =>  [Colar Especial] => [Valores]

 

Saúde e Sorte.

  • Like 1
Link to comment
Share on other sites

Guest Zangado

essa macro ordena em ordem crescente uma area selecionada na planilha

facilmente adaptavel para range definida

Sub Ordena_Seleção()
      

     Coluno = Selection.Value2
     Lfim = UBound(Coluno, 1): TCo = UBound(Coluno, 2)
     ci1 = 1   ' coluna inicial de dados da array


   
          For Lx = 1 To Lfim
               inC = ci1:
               i = inC + 1
               Do
                    a = Coluno(Lx, inC): b = Coluno(Lx, inC + 1)
                    If a > b Then
                         Coluno(Lx, inC) = b: C = a
                         Coluno(Lx, inC + 1) = C
                         If inC > ci1 Then inC = inC - 1
                    Else
                         inC = i: i = i + 1
                    End If
               Loop Until inC = TCo
          Next

     '----------------------------------------------------------------------------------------------------
     Selection.Value2 = Coluno

End Sub

 

Link to comment
Share on other sites

3 minutos atrás, edcronos2 disse:

essa macro ordena em ordem crescente uma area selecionada na planilha

facilmente adaptavel para range definida


Sub Ordena_Seleção()
      

     Coluno = Selection.Value2
     Lfim = UBound(Coluno, 1): TCo = UBound(Coluno, 2)
     ci1 = 1   ' coluna inicial de dados da array


   
          For Lx = 1 To Lfim
               inC = ci1:
               i = inC + 1
               Do
                    a = Coluno(Lx, inC): b = Coluno(Lx, inC + 1)
                    If a > b Then
                         Coluno(Lx, inC) = b: C = a
                         Coluno(Lx, inC + 1) = C
                         If inC > ci1 Then inC = inC - 1
                    Else
                         inC = i: i = i + 1
                    End If
               Loop Until inC = TCo
          Next

     '----------------------------------------------------------------------------------------------------
     Selection.Value2 = Coluno

End Sub

 


Nada melhor do que uma macro.
Obrigado Universal amigo @edcronos2.

  • Like 1
Link to comment
Share on other sites

6 minutos atrás, pietruk disse:

Ajuda,

Como organizar uma linha de resultados do maior para o menor inclusive com repetidas: 

Exemplo de como está: 

03 05 09 03 07 09 05 08 07

Exemplo de como deve ficar: 

09 09 08 07 07 05 05 03 03

 

A macro postada pelo universal @edcronos2, faz isto com os pés na costa

03    03    05    05    07    07    08    09    09

 

Basta selecionar as DZ, eu crie um botão, pois estou mexendo com muitas linhas.

Desculpa ai pietruk...Eu entendi errado.

Link to comment
Share on other sites

Guest Zangado
3 minutos atrás, pietruk disse:

Ajuda,

Como organizar uma linha de resultados do maior para o menor inclusive com repetidas: 

Exemplo de como está: 

03 05 09 03 07 09 05 08 07

Exemplo de como deve ficar: 

09 09 08 07 07 05 05 03 03

bem vc pode ordenar em crescente e depois inverter,

depois eu monto a macro, apesar que é só modificar um pouco essa que postei

Link to comment
Share on other sites

7 minutos atrás, edcronos2 disse:

bem vc pode ordenar em crescente e depois inverter,

depois eu monto a macro, apesar que é só modificar um pouco essa que postei

Posso usar sua macro no Excel ???

se sim seria possível me passar um exemplo, muito obrigado pela sua atenção 

Link to comment
Share on other sites

Guest Zangado
28 minutos atrás, pietruk disse:

Posso usar sua macro no Excel ???

se sim seria possível me passar um exemplo, muito obrigado pela sua atenção 

ela é para usar no excel mesmo

no caso vc coloca em um modulo

seleciona a range que quer organizar e roda a macro

Link to comment
Share on other sites

Guest Zangado

bem para colocar em ordem decrescente

modifiquei um pouco a macro para usar uma range fixa bastando modificar as letras e os numeros

  •      coluna_inicial = "b"
  •      coluna_final = "h"
  •      Linha_inicial = 6
  •      linha_final = 7

Sub Ordena_Seleção_decrescente()

     coluna_inicial = "b"
     coluna_final = "h"
     Linha_inicial = 6
     linha_final = 7

     Coluno = Range(coluna_inicial & Linha_inicial, coluna_final & linha_final).Value2
     Lfim = UBound(Coluno, 1): TCo = UBound(Coluno, 2)
     ci1 = 1   ' coluna inicial de dados da array

     For Lx = 1 To Lfim
          inC = ci1
          i = inC + 1
          Do
               a = Coluno(Lx, inC): b = Coluno(Lx, inC + 1)
               If a < b Then
                    Coluno(Lx, inC) = b: C = a
                    Coluno(Lx, inC + 1) = C
                    If inC > ci1 Then inC = inC - 1
               Else
                    inC = i: i = i + 1
               End If
          Loop Until inC = TCo
     Next

     '----------------------------------------------------------------------------------------------------
     Range(coluna_inicial & Linha_inicial, coluna_final & linha_final).Value2 = Coluno

End Sub

 

Link to comment
Share on other sites

Crescente:

Sub Crescente()
Dim myRow As Range
For Each myRow In Selection.Rows
myRow.Sort myRow.Cells(1), xlAscending, Header:=xlNo, Orientation:=xlSortRows
Next myRow
End Sub

 

Ou decrescente:

 

Sub Decrescente()
Dim myRow As Range
For Each myRow In Selection.Rows
myRow.Sort myRow.Cells(1), xlDescending, Header:=xlNo, Orientation:=xlSortRows
Next myRow
End Sub

 

 

Não entendo disso.

Peguei por aí.

Não vou dar os devidos créditos porque não lembro mais...:-(...

8-)

...

  • Like 1
Link to comment
Share on other sites

46 minutos atrás, Wata disse:

Crescente:

Sub Crescente()
Dim myRow As Range
For Each myRow In Selection.Rows
myRow.Sort myRow.Cells(1), xlAscending, Header:=xlNo, Orientation:=xlSortRows
Next myRow
End Sub

 

Ou decrescente:

 

Sub Decrescente()
Dim myRow As Range
For Each myRow In Selection.Rows
myRow.Sort myRow.Cells(1), xlDescending, Header:=xlNo, Orientation:=xlSortRows
Next myRow
End Sub

 

 

Não entendo disso.

Peguei por aí.

Não vou dar os devidos créditos porque não lembro mais...:-(...

8-)

...

 

Obrigado Wata. Valews.

  • Like 1
Link to comment
Share on other sites

  • 4 months later...
1 minuto atrás, Antonio Tadeu disse:

Muito obrigado a todos !!!

 

Meu amigo, o que eu mais acho estranho nesse fórum é que sempre que estou estudando alguma coisa alguém também está e posta alguma pergunta ou post sobre a mesma coisa!!! É SÉRIO. kkk

 

Sei que o pessoal já te ajudou, mas segue planilha que acabei de fazer, prefiro fórmulas do que macros então...

http://www.mediafire.com/file/xac8iwidqb0zvqb/FÓRMULA_ORDENAR.xlsx

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...