Ordenar listas em Exel

RicardoSilva

Power Member
Ois ppls!
Agradecia mto se me podessem ajudar... é assim..tenho numa folha de Exel, 6 colunas (tipo base de dados) e gostaria de colocar junto do titulo de cada, 1 botão para ordenar de A-Z essa as linhas dessa coluna, mudando as outras como é obvio!!
mto obg e espero k me possão ajudar!! :003:
 
Boas,

Penso que seja isto que queiras...

Não sei se sabes trabalhar com macros e vba, mas penso que não haja problema...

Cria os teus command buttons todos na tua folha.
Seguida, vais a tools -> macro -> visual basic editor. Dentro do visual basic editor fazes, insert -> module, dentro do module passa este
Código principal:

Sub Macro1()
Range("F2:I6").Sort Key1:=Range("F2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub


No range("F2:I6") muda para as colunas que queres ordenar.
Onde diz range("F2") muda para a 1ª coluna que queres que seja feito o ordenamento das tabelas. Usei as células de F2 a I6 e neste caso a primeira coluna será F2.

A seguir volta para a tua folha e: botão do lado direito do rato no botão que queres utilizar -> view code e metes este
Código para chamar a macro:

Private Sub CommandButton1_Click()
Call Macro1
End Sub


Depois para o segundo botão é só fazeres um copy do código Macro1, mudares o nome para Macro2, por exemplo.
Podes usar o mesmo module para todos os códigos principais.
Mudares tambem o range("F2") para a 2ª coluna, ou neste caso iria ficar como range("g2"), visto ser a segunda coluna.
E mudares tambem o código do 2º botão para Call Macro2 por exemplo.

Depois para veres os botões a funcionar, tens que sair do modo de desenho.
É só carregar num que tenha um esquadro, uma régua e um lápis.
Se não encontrares, vai a View -> Toolbars -> Control Toolbox. Isto tambem serve para o caso de não saberes como desenhares os botões.

Espero ter ajudado, fica bem :)
 
Ois desc lá amigo... mas ele tá a dar-me erro nesta parte do código.... "DataOption1:=xlSortNormal" o erro é o seguinte: "Name argument not found" eu esquecime de dizer que estou a usar o Excel 97 ... já agr...eu não percebo assim mto de vb mas dá-me a sensação que com este código ele só vai ordenar a coluna especificada não ordenando as outras... mas sekalhar estou errado.. só digo isto pk posso não ter sido mto especifico no meu post... de qualquer maneira mto obg!! ;)
 
Última edição:
Boas,

Experimenta este código, possivelmente já dá. É que estou a fazer isto no excel 2003 e podem acontecer estes erros.

Sub Macro1()

Range("F2:I6").Sort Key1:=Range("f2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom

End Sub

Se não der, teremos que fazer uma macro e depois aproveitar o código.

Ao fazermos o Range("F2:I6").Sort estamos a dizer para ele escolher este range todo de células, do F2, F3, F4, F5, F6 a I2, I3, I4, I5, I6 . Depois com a parte do código Range("f2") . Estamos a dizer que vamos utilizar a coluna F, para ordenar as colunas e rows por ordem ascendente.

Por exemplo, temos:

célula F2 = Pedro
célula F3 = Maria

célula G2 = João
célula G3 = Manuel

Ao fazermos a ordenação ascendente na coluna F ele irá por as colunas assim

célula F2 = Maria
célula F3 = Pedro

célula G2 = Manuel
célula G3 = João

Penso que seja isto que queiras...
Fica bem :)
 
exactamente!!! nem mais... era mesmo essa a ideia.... mto obrigado!! enquanto esperava uma resposta fui tentando fazer sózinho...acabei por apagar este bucado que era onde estava a dar erro : "DataOption1:=xlSortNormal" (inteligente, não? :P) e dp começei a ver que quando carregava num botão os botões vinham parar ao final da lista...lol mas d ***** maneira ele estava a ordenar correctamente!! (optimo!!) foi só meter a ordenar só apartir de "A2"!! e já está a bombar!! agr surgiu-me outro prob...que é no caso d a lista aumentar... ele só vai fazer por exemplo até á 6 linha né?? (para despachar fix ("A2:E18000")) :P e Resultou!!
 
Back
Topo