Для сортировки таблицы вам нужно написать скрипт VBA. Вообще говоря, формула в ячейке не может влиять на содержимое другой ячейки (точнее, формула другой ячейки; одна ячейка может изменить значение других ячеек, если другие ячейки содержат формулу, которая ссылается на нее).
В качестве обходного пути, так как вы собираетесь сортировать таблицу назначения (т.е. таблицы) после обновления исходной таблицы (например, расписание), мы можем выполнить некоторую сортировку косвенно:
- Измените исходную таблицу, чтобы рейтинг автоматически рассчитывался
- Обновите таблицу назначения, чтобы ее содержимое было найдено из исходной таблицы
VLOOKUP
.
Шаг 1
Сделайте ранжирование по первому столбцу (т.е. столбцу A в этом примере) и сделайте формулу следующим образом:
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
Пожалуйста, обновите диапазон самостоятельно. Первая COUNTIF
подсчитывает, сколько команд имеет процент выигрыша выше, а вторая COUNTIF
подсчитывает, сколько команд связано с ним. Это важно, потому что нам не нужно, чтобы дублирующийся рейтинг сбивал с толку VLOOKUP
.
Например, приведенный выше пример выглядит так:
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%
Как вы видите, команда F и команда G имеют одинаковый процент выигрыша, им присваивается разный рейтинг.
Шаг 2
В вашей таблице назначения (то есть в турнирной таблице) вам необходимо обновить ее, используя множество 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)
И вы получите свои результаты, как:
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%