• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

alexvaz

[Resolvido] Dúvida Excel - Ordenação de Células com Fórmulas

7 mensagens neste tópico

Boa tarde. Tenho uma folha de cálculo em excel para um torneio de cartas. Tem as jornadas e os resultados, até aí tudo bem. Depois tenho uma tabela de classificaçãoque tem as equipas e os pontos, que é apenas a SOMA das células que dizem erspeito a resultados dessa equipa. O problema é ordenar essa tabela pelos pontos. O que acontece é que a ordem da coluna dos pontos é alterada e consequentemente as formulas também.

Alguém sabe como posso fazer com que as formulas se mantenham mesmo passando para outra linah ou outra forma de resolver o problema?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Não sei se percebi bem a tua dúvida, mas se o problema é a alteração das fórmulas quando as copias para outra célula, podes resolver isso "trancando" as referências que estão presentes na fórmula. Isto faz-se colocando um $ antes da letra e do número que fazem parte da referência.

Exemplo:

Se tiveres na célula A1 a fórmula " = A2*2 " e a copiares para a célula A2, a fórmula vai ser colada automaticamente como " =A3*2 ", pois a referência é relativa - depende da sua posição.

Por outro lado, se alterares a fórmula para " = $A$2*2 ", ela mantém-se igual mesmo que a copies para qualquer célula da folha - é uma referência absoluta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando estiveres a colocar a fórmula por exemplo B1+C2 , pressiona F4 a seguir ao nome da célula, i.e:

B1(tecla F4)+C2(tecla F4)

vai aparecer a seguinte fórmula: = =$B$1+$C$2

Assim quando ordenares pelos pontos a fórmula mantém-se

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora uma sugestão para o Excel ordenar a tabela automaticamente quando muda um valor na folha

No Editor de Visual Basic selecciona o evento Workbook_SheetChange

e coloca este código


Range("A1:B5").Select
    Selection.Sort Key1:=Range("B2"), Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

A única coisa que tens de mudar é o range e colocar as células onde está a tua tabela de pontos

por exemplo a tua tabela de pontos está de B2 a d4 :  Range("B2:D4").Select

nesta parte do código  Selection.Sort Key1:=Range("B2"),  tens de escolher a célula onde começa a coluna dos pontos

Atenção que primeiro tens de colocar as referências absolutas nas fórmulas como já foi dito

encerra o livro volta a abrir autorizando macros e já está a tabela actualiza-se automáticamente

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Epá, muito obrigado a todos.

Uma coisa tão simples... É o que dá já estar muito tempo sem travbalhar no excel.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, utilizei esse código para ordenar a tabela por pontos semrpe que a folha é alterada...

Mas gostaria de ordenar primeiro por pontos e depois para as equipas com os mesmos pontos desempatar com o nº de jogos (ascendente).

Como posso fazer isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Range("A1:c5").Select
    Selection.Sort Key1:=Range("B2"), Order1:=xlDescending, Key2:=Range("C2") _
        , Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
End Sub

Assim alinha primeiro por pontos e depois por jogos.

O Excel gera código VBA auitomáticamente através de gravação de Macros. Se quiseres ver o código para determinada acção: Menu Ferramentas - Macros Gravar nova Macro- fazes a acção ou acções que queres e terminas a gravação da Macro.

Vais ao editor Visual Basic e está lá uma pasta Module com o código gerado, depois basta copiar esse código para o evento que queres, seja quando abres o livro, quando ele é alterado ou podes associar esse comando a um botão ou a outro objecto qualquer. A maneira mais facil de aprender VBA (talvez não a mais correcta) é assim. :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora