none
Macro Classificar Ordem Crescente

    Question

  • Boa noite

    Tenho uma planila com 15 colunas e 3000 linhas. Em cada coluna das 3000 linhas, tem números desordenados e gostaria de colocar em ordem. Para não fazer isso linha por linha, gostaria de executar uma macro que ordenasse toda a planilha.

    *Tentei a a resposta do Tuta para o colega Cespim, desse mesmo título, mas não deu certo.

    Ex.:

    Situação atual

    15 13 5 9 68 12 17 2 8 3 1 4 6 22 53

    Situação esperada

    1 2 3 4 5 6 8 9 12 13 15 17 22 53 68

     

    Poderiam me ajudar?

     

    Grato.

    ELENIR

    Monday, January 03, 2011 2:12 AM

Answers

  • Segue código:

    Supondo que os dados estejam iniciando em A1;

    Option Base 1

    Sub Ordenar()

        For n = 1 To 15
            For i = 1 To 3000
                For j = 1 To 14
                    If Cells(i, j).Value > Cells(i, j + 1).Value Then
                        Aux = Cells(i, j).Value
                        Cells(i, j).Value = Cells(i, j + 1).Value
                        Cells(i, j + 1).Value = Aux
                     End If
                Next j
            Next i
         Next n

    End Sub

    Abs.

    Evando Anholeti.

     

    • Proposed as answer by Evando A. M Monday, January 03, 2011 11:22 PM
    • Edited by Evando A. M Monday, January 03, 2011 11:32 PM Correção.
    • Marked as answer by Sr Elenir Tuesday, January 04, 2011 4:02 AM
    Monday, January 03, 2011 3:35 PM
  • Evandro, boa noite.

     

    Desculpe a demora em responder....PERFEITO...deu certíssimo.

     

    Obrigado!

    • Marked as answer by Sr Elenir Tuesday, January 18, 2011 9:56 PM
    Tuesday, January 18, 2011 9:56 PM

All replies

  • Segue código:

    Supondo que os dados estejam iniciando em A1;

    Option Base 1

    Sub Ordenar()

        For n = 1 To 15
            For i = 1 To 3000
                For j = 1 To 14
                    If Cells(i, j).Value > Cells(i, j + 1).Value Then
                        Aux = Cells(i, j).Value
                        Cells(i, j).Value = Cells(i, j + 1).Value
                        Cells(i, j + 1).Value = Aux
                     End If
                Next j
            Next i
         Next n

    End Sub

    Abs.

    Evando Anholeti.

     

    • Proposed as answer by Evando A. M Monday, January 03, 2011 11:22 PM
    • Edited by Evando A. M Monday, January 03, 2011 11:32 PM Correção.
    • Marked as answer by Sr Elenir Tuesday, January 04, 2011 4:02 AM
    Monday, January 03, 2011 3:35 PM
  • Evandro, boa noite.

    Com o seu código não deu certo, mas por esse( veja abaixo ), citado por outro colega seu, consegui.

    Obrigado!

    Sub OrdenaLinha()
    Dim L#, ColF#
    ColF = Range("A1").End(xlToRight).Columns.Column
    For L = 1 To Rows.Count
    If Range("A" & L) = "" Then Exit For
    Range(Cells(L, 1), Cells(L, ColF)).Sort Key1:=Cells(L, 1), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, DataOption1:=xlSortNormal
    Next
    End Sub
    Tuesday, January 04, 2011 4:00 AM
  • ...colocadas as colunas de cada linha em ordem( do menor para o maior número ), agora complica um pouco:

    Preciso colocar as linhas de cada coluna em ordem do menor para o maior número. No Excel, em Dados/Classificar, tenho apenas 3 opções...quero fazer isso com todas as colunas.

     

    Pode me ajudar?

     

    Abraço!

     

    Tuesday, January 04, 2011 4:34 AM
  • Tenta isso:

    Sub Ordenar()

        Dim i

        For i = 1 To 15
       
            Range(Cells(1, i), Cells((Range("A1").End(xlDown).Rows.Row), i)).Sort _
            Key1:=Cells(1, i), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
       
        Next i

    End Sub

    Abraços.

     

    Tuesday, January 04, 2011 2:59 PM
  • Evandro, boa noite.

     

    Desculpe a demora em responder....PERFEITO...deu certíssimo.

     

    Obrigado!

    • Marked as answer by Sr Elenir Tuesday, January 18, 2011 9:56 PM
    Tuesday, January 18, 2011 9:56 PM
  • Que bom que deu certo.

     

    Eu tinha algo parecido, fui em Gravar Macro e tomei o código para ordenar de A a Z (pela coluna).

    De um modo menos inteligente, talvez funcionasse também se você transposse os dados, ordenasse de A a Z dentro de um for que varre cada coluna e, em seguida, transpor novamente.

    Saturday, January 29, 2011 3:35 PM
  • Evandro, boa noite.

     

    Mais uma pequena ajuda se for possível. Já tenho como ordenar linha e coluna pelo código abaixo:
    Sub Ordenar_Linha()


        For n = 1 To 15
            For i = 1 To 3000
                For j = 1 To 14
                    If Cells(i, j).Value > Cells(i, j + 1).Value Then
                        Aux = Cells(i, j).Value
                        Cells(i, j).Value = Cells(i, j + 1).Value
                        Cells(i, j + 1).Value = Aux
                     End If
                Next j
            Next i
         Next n

    End Sub

    Sub Ordenar_Coluna()

    Dim i

        For i = 1 To 15
      
            Range(Cells(1, i), Cells((Range("A1").End(xlDown).Rows.Row), i)).Sort _
            Key1:=Cells(1, i), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
      
        Next i

    End Sub
    O que preciso agora seria saber a quantidade de grupos iguais. Exemplo:
    1 1 2 3 4 4 5 6
    1 1 2 3 4 4 5 6 neste exemplo, esta sequência aperece 2 vezes....e assim por diante....uma forma de contar cada sequência.
    Grato desde já



    Wednesday, August 24, 2011 3:49 AM