Como eu automaticamente classifico uma tabela no Excel toda vez que um dos seus valores é atualizado?

1

Estou mantendo os resultados de uma temporada do jogo de tabuleiro de beisebol Strat-O-Matic em uma planilha do Excel (Excel 2011 para Mac). A folha tem o calendário da liga e a classificação da liga. Já o configurei para que, sempre que eu digitar a pontuação de um jogo, a classificação seja atualizada para refletir os novos recordes de ganhos e perdas das equipes que participaram do jogo.

Depois de inserir a pontuação de um jogo, eu gostaria que a classificação fosse classificada automaticamente, em vez de precisar classificar manualmente por porcentagem de ganho. Se isso faz diferença, há quatro tabelas de classificação diferentes, uma para cada uma das quatro divisões desta liga. Eles devem ser classificados individualmente por porcentagem de ganho toda vez que a planilha for atualizada.

Qualquer ajuda é apreciada, obrigado.

    
por Evan Olawsky 14.10.2016 / 03:24

1 resposta

2

Para ordenar a tabela, você precisará escrever um script VBA. De modo geral, a fórmula em uma célula não pode ter um efeito no conteúdo da outra célula (a fórmula da outra célula é precisa; uma célula pode alterar o valor das outras células se as outras células contiverem uma fórmula que se refira a ela). p>

Como solução alternativa, como você vai classificar a tabela de destino (ou seja, classificação) depois de atualizar a tabela de origem (ou seja, programação), podemos fazer uma classificação indireta:

  1. Modifique a tabela de origem para que a classificação seja calculada automaticamente
  2. Atualize a tabela de destino para que seu conteúdo seja pesquisado na tabela de origem em VLOOKUP .

Etapa 1

Faça a classificação na primeira coluna (ou seja, coluna A neste exemplo) e faça a fórmula assim:

  A                                               |  B   |   C
--------------------------------------------------+------+-------------------
Rank                                              | Team | Winning Percentage
=COUNTIF(C$2:C$9,">"&C2)+1                        | A    | 0.05
=COUNTIF(C$2:C$9,">"&C3)+COUNTIF(C$2:C2, C3)+1    | B    | 0.99
=COUNTIF(C$2:C$9,">"&C4)+COUNTIF(C$2:C3, C4)+1    | C    | 0.81
=COUNTIF(C$2:C$9,">"&C5)+COUNTIF(C$2:C4, C5)+1    | D    | 0.92
=COUNTIF(C$2:C$9,">"&C6)+COUNTIF(C$2:C5, C6)+1    | E    | 0.54
=COUNTIF(C$2:C$9,">"&C7)+COUNTIF(C$2:C6, C7)+1    | F    | 0.15
=COUNTIF(C$2:C$9,">"&C8)+COUNTIF(C$2:C7, C8)+1    | G    | 0.15
=COUNTIF(C$2:C$9,">"&C9)+COUNTIF(C$2:C8, C9)+1    | H    | 0.40

Atualize o intervalo sozinho. O primeiro COUNTIF conta quantas equipes tem uma porcentagem de vitórias maior que ele e o segundo COUNTIF conta quantas equipes empatam com ele. Isso é importante porque não precisamos de classificação duplicada para confundir o VLOOKUP .

Por exemplo, o exemplo acima se parece com:

Rank | Team | Winning Percentage
8    | A    | 5%
1    | B    | 99%
3    | C    | 81%
2    | D    | 92%
4    | E    | 53%
6    | F    | 15%
7    | G    | 15%
5    | H    | 40%

Como você pode ver que a equipe F e a equipe G têm a mesma porcentagem vencedora, eles recebem uma classificação diferente.

Etapa 2

Na sua tabela de destino (ou seja, classificação), é necessário atualizá-lo usando lotes de VLOOKUP :

  A  |   B                                         |   C
-----+---------------------------------------------+------------------------------------------
Rank | Team                                        | Winning percentage
1    | =VLOOKUP($A2,Schedule!$A$1:$C$9,2,FALSE)    | =VLOOKUP($A2,Schedule!$A$1:$C$9,3,FALSE)
2    | =VLOOKUP($A3,Schedule!$A$1:$C$9,2,FALSE)    | =VLOOKUP($A3,Schedule!$A$1:$C$9,3,FALSE)
3    | =VLOOKUP($A4,Schedule!$A$1:$C$9,2,FALSE)    | =VLOOKUP($A4,Schedule!$A$1:$C$9,3,FALSE)
4    | =VLOOKUP($A5,Schedule!$A$1:$C$9,2,FALSE)    | =VLOOKUP($A5,Schedule!$A$1:$C$9,3,FALSE)
5    | =VLOOKUP($A6,Schedule!$A$1:$C$9,2,FALSE)    | =VLOOKUP($A6,Schedule!$A$1:$C$9,3,FALSE)
6    | =VLOOKUP($A7,Schedule!$A$1:$C$9,2,FALSE)    | =VLOOKUP($A7,Schedule!$A$1:$C$9,3,FALSE)
7    | =VLOOKUP($A8,Schedule!$A$1:$C$9,2,FALSE)    | =VLOOKUP($A8,Schedule!$A$1:$C$9,3,FALSE)
8    | =VLOOKUP($A9,Schedule!$A$1:$C$9,2,FALSE)    | =VLOOKUP($A9,Schedule!$A$1:$C$9,3,FALSE)

E você receberá seus resultados como:

Rank | Team | Winning percentage
1    | B    | 99%
2    | D    | 92%
3    | C    | 81%
4    | E    | 53%
5    | H    | 40%
6    | F    | 15%
7    | G    | 15%
8    | A    | 5%
    
por 14.10.2016 / 04:29