Jak automatycznie sortować tabelę w programie Excel za każdym razem, gdy jedna z jej wartości jest aktualizowana?

1

Przechowuję wyniki sezonu gry planszowej baseball Strat-O-Matic w arkuszu kalkulacyjnym Excel (Excel 2011 dla komputerów Mac). Arkusz ma harmonogram ligowy i tabele ligowe. Skonfigurowałem go tak, że za każdym razem, gdy wprowadzam wynik gry, tabele są aktualizowane, aby odzwierciedlić nowe rekordy wygranych-przegranych drużyn, które brały udział w tej grze.

Po wprowadzeniu wyniku gry chciałbym, aby klasyfikacje były sortowane automatycznie, zamiast ręcznego sortowania według wygranej procentowej. Jeśli to robi różnicę, w rzeczywistości są cztery różne tabele klasyfikacji, po jednej dla każdej z czterech dywizji w tej lidze. Wszystkie powinny być indywidualnie sortowane według procentowej wygranej za każdym razem, gdy arkusz kalkulacyjny jest aktualizowany.

Każda pomoc jest doceniana, dziękuję.

adustybowler
źródło

Odpowiedzi:

2

Aby posortować tabelę, musisz napisać skrypt VBA. Ogólnie rzecz biorąc, formuła w komórce nie może mieć wpływu na zawartość innej komórki (formuła drugiej komórki jest dokładna; jedna komórka może zmienić wartość innych komórek, jeśli inne komórki zawierają formułę, która się do niej odnosi).

Jako obejście problemu, ponieważ zamierzasz posortować tabelę docelową (tj. Pozycje) po zaktualizowaniu tabeli źródłowej (tj. Harmonogramu), możemy wykonać sortowanie pośrednio:

  1. Zmodyfikuj tabelę źródłową, aby ranking został obliczony automatycznie
  2. Zaktualizuj tabelę docelową, aby jej zawartość była wyszukiwana z tabeli źródłowej przez VLOOKUP.

Krok 1

Ustaw ranking w pierwszej kolumnie (np. Kolumna A w tym przykładzie) i utwórz następującą formułę:

  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

Zaktualizuj zakres samodzielnie. Pierwszy COUNTIF liczy, ile drużyn ma wyższy procent wygranych niż drugi i drugi COUNTIF liczy, ile drużyn z nim wiąże. Jest to ważne, ponieważ nie chcemy, aby zduplikowany ranking mylił VLOOKUP.

Na przykład powyższy przykład wygląda następująco:

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%

Ponieważ widzisz, że drużyna F i drużyna G mają taki sam procent wygranych, otrzymują inny ranking.

Krok 2

W tabeli docelowej (tzn. Tabelach) musisz ją zaktualizować za pomocą wielu 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)

Otrzymasz wyniki takie jak:

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%
Kenneth L
źródło