Usuário com melhor resposta
Macro classificar ordem crescente ( Atualizar?)

Pergunta
-
Pessoal, tenho diversas planilhas, que variam de 1000 linhas
e 6 colunas até 800 linhas e 15 colunas.
Os valores das linhas são colocados de forma aleatoria, mas
devem ser apresentados na ordem crescente, pois indicam
leituras de um aparelho que possuo que mede picos de utilização
de "quarto de força".
Por exemplo:
Planilha
18 20 25 23 10 11 24 14 6 2 13 9 5 16 3 23 15 5 4 12 16 20 6 11 19 24 1 9 13 7
Gostaria de ter o resultado da seguinte forma:
2 3 5 6 9 10 11 13 14 16 18 20 23 24 25 1 4 5 6 7 9 11 12 13 15 16 19 20 23 24
Sei que o Excel classificar linhas, mas como mencionei,
são várias tabelas onde a maior tem 1000 linhas e 6 colunas,
enquanto que a menor tem 600 linhas por 25 colunas.
Alguem teria uma macro que seja capaz de diferenciar o número de
linhas e colunas e fizesse essa tarefa de uma vez ?
Me ajudaria muito mesmo se alguma alma caridosa pudesse criar ou
fornecer a macro demais, pois são 6 tabelas......
Agradeço antecipadamente a leitura do problema aguardo alguma solução.....terça-feira, 28 de abril de 2009 01:22
Respostas
-
Acabei de fazer o teste e o resultado foi este.
2 3 5 6 9 10 11 13 14 16 18 20 23 24 25 1 4 5 6 7 9 11 12 13 15 16 19 20 23 24 1 4 6 7 8 9 10 11 12 14 16 17 20 23 24
É porque fiz o código supondo que seus dados começem da célula A1...Coloque essa tabela na célula a1...vai dar certo....
Onde está a 1º célula da sua tabela tirando o nome da coluna, temos que adaptar o código..- Marcado como Resposta Gmamorim terça-feira, 28 de abril de 2009 14:59
terça-feira, 28 de abril de 2009 14:48
Todas as Respostas
-
Olá..
Criei essa rotina que ordena linha a linha supondo que seus dados estejam a partir da célula A1.
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
Não se esqueça de marcar a resposta como respondida...
Qualquer dúvida post denovo..até..- Editado EvangelistaLion terça-feira, 28 de abril de 2009 12:40
terça-feira, 28 de abril de 2009 03:03 -
Eva!
Quase deu certo, mas veja o que acontece:
Trecho da Planilha antes de rodar a macro:
Mesmo trecho da Planilha DEPOIS de rodar a macro:
18
20
25
23
10
11
24
14
6
2
13
9
5
16
3
18
20
25
23
10
11
24
14
6
2
13
9
5
16
3
23
15
5
4
12
16
20
6
11
19
24
1
9
13
7
5
15
23
4
12
16
20
6
11
19
24
1
9
13
7
20
23
12
8
6
1
7
11
14
4
16
10
9
17
24
12
20
23
8
6
1
7
11
14
4
16
10
9
17
24
A macro colocou alguns valores das linhas em ordem, mas “esqueceu” de alguns dados.
Alguma sugestão? Pesquisando no fórum achei um tópico bem parecido, mas que não abrange todos os meus valores:
http://social.msdn.microsoft.com/Forums/pt-BR/excelpt/thread/d4eb0b1b-b140-4fe4-947c-40cdd3c6aca9/
O ideal seria ter uma macro parecida com esta que englobasse todos meus dados, pois a macro explicada pelo tuta, abarca parte dos dados.
Aguardo novamente o apoio do pessoal.
GRATO!
terça-feira, 28 de abril de 2009 13:44 -
Acabei de fazer o teste e o resultado foi este.
2 3 5 6 9 10 11 13 14 16 18 20 23 24 25 1 4 5 6 7 9 11 12 13 15 16 19 20 23 24 1 4 6 7 8 9 10 11 12 14 16 17 20 23 24
É porque fiz o código supondo que seus dados começem da célula A1...Coloque essa tabela na célula a1...vai dar certo....
Onde está a 1º célula da sua tabela tirando o nome da coluna, temos que adaptar o código..- Marcado como Resposta Gmamorim terça-feira, 28 de abril de 2009 14:59
terça-feira, 28 de abril de 2009 14:48 -
PERFEITO!
Funciona que é uma beleza!
Agora posso fazer o que preciso!
Muito Obrigado EvangelistaLion!!!!
terça-feira, 28 de abril de 2009 15:01 -
Eva!
Quase deu certo, mas veja o que acontece:
Trecho da Planilha antes de rodar a macro:
Mesmo trecho da Planilha DEPOIS de rodar a macro:
18
20
25
23
10
11
24
14
6
2
13
9
5
16
3
18
20
25
23
10
11
24
14
6
2
13
9
5
16
3
23
15
5
4
12
16
20
6
11
19
24
1
9
13
7
5
15
23
4
12
16
20
6
11
19
24
1
9
13
7
20
23
12
8
6
1
7
11
14
4
16
10
9
17
24
12
20
23
8
6
1
7
11
14
4
16
10
9
17
24
A macro colocou alguns valores das linhas em ordem, mas “esqueceu” de alguns dados.
Alguma sugestão? Pesquisando no fórum achei um tópico bem parecido, mas que não abrange todos os meus valores:
http://social.msdn.microsoft.com/Forums/pt-BR/excelpt/thread/d4eb0b1b-b140-4fe4-947c-40cdd3c6aca9/
O ideal seria ter uma macro parecida com esta que englobasse todos meus dados, pois a macro explicada pelo tuta, abarca parte dos dados.
Aguardo novamente o apoio do pessoal.
GRATO!
, para que SE POSSÍVEL vocês adaptassem esse VBA à minha necessidade. Aproveito ainda, para solicitar alguma literatura, onde se explique a estrutura da linguagem do VBA, porque tenho absoluta certeza de que não é difícil. Consigo fazer html em um txt, bbbcode, fórmulas do próprio excel, e outras linguagens. Mas o VBA não entra na caxola. Talvez por falta de uma leitura da qual por mais que eu busque, não a encontro. Ah, só pra confirmar, a primeira célula que dever ser classificada é "B3", e a última é "K101". Tenho mais duas dúvidas, uma na formatação condicional e uma na fórmula, mas isto é pra outro post. Obrigado a todos, bom Domingo e feliz 2010.
domingo, 17 de janeiro de 2010 13:33 -
OLÁ....
AQUI O CÓDIGO ADAPTADO...
Sub OrdenaLinha()
Dim L#, ColF#
ColF = 11 ' NÚMERO DA COLUNA FINAL
For L = 3 To Rows.Count ' INICIA O FOR NA LINHA 3 ATÉ A ULTIMA LINHA DA PLANILHA
If Range("B" & L) = "" Then Exit For ' SE ENCOMTRAR UMA LINHA EM BRANCO TERMINA O CÓDIGO
Range(Cells(L, 2), Cells(L, ColF)).Sort Key1:=Cells(L, 2), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, DataOption1:=xlSortNormal
'ORDENA A LINHA INTERIRA DE ORDEM ASCENDENTE
Next ' PRÓXIMA LINHA
End Sub
Éste livro eu já li e é muito bom...
http://www.submarino.com.br/produto/1/1808066/treinamento+avancado+em+vba
Este não li, mas parece ser bom também..
http://www.submarino.com.br/produto/1/21262941/curso+essencial+de+vba
Site sobre excel...
http://www.tudosobrexcel.com/
Se solucionar marque como resposta..
Até..- Sugerido como Resposta cmtealmeida quarta-feira, 20 de janeiro de 2010 13:17
quarta-feira, 20 de janeiro de 2010 12:01 -
OLÁ....
AQUI O CÓDIGO ADAPTADO...
Sub OrdenaLinha()
Dim L#, ColF#
ColF = 11 ' NÚMERO DA COLUNA FINAL
For L = 3 To Rows.Count ' INICIA O FOR NA LINHA 3 ATÉ A ULTIMA LINHA DA PLANILHA
If Range("B" & L) = "" Then Exit For ' SE ENCOMTRAR UMA LINHA EM BRANCO TERMINA O CÓDIGO
Range(Cells(L, 2), Cells(L, ColF)).Sort Key1:=Cells(L, 2), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, DataOption1:=xlSortNormal
'ORDENA A LINHA INTERIRA DE ORDEM ASCENDENTE
Next ' PRÓXIMA LINHA
End Sub
Éste livro eu já li e é muito bom...
http://www.submarino.com.br/produto/1/1808066/treinamento+avancado+em+vba
Este não li, mas parece ser bom também..
http://www.submarino.com.br/produto/1/21262941/curso+essencial+de+vba
Site sobre excel...
http://www.tudosobrexcel.com/
Se solucionar marque como resposta..
Até..
Sensacioal. Perfeito. E o livro já foi comprado.
MUITO OBRIGADO.
8O)quarta-feira, 20 de janeiro de 2010 13:19 -
Olá....Que bom que deu certo....Boa leitura...
Você marcou a opção errada....Você clicou em propor como resposta....Você tem que clicar em marcar como resposta..
Abraço..quarta-feira, 20 de janeiro de 2010 13:30