每次更新 Excel 表中的某个值时,如何自动对其进行排序?

每次更新 Excel 表中的某个值时,如何自动对其进行排序?

我正在 Excel 电子表格(适用于 Mac 的 Excel 2011)中保存棒球棋盘游戏 Strat-O-Matic 一个赛季的结果。该表格包含联赛赛程和联赛排名。我已经设置好了,这样每当我输入一场比赛的比分时,排名就会更新,以反映参加该场比赛的球队的新胜负记录。

输入比赛得分后,我希望排名能够自动排序,而不必手动按胜率排序。如果这有区别的话,实际上有四个不同的排名表,每个排名表对应这个联盟的四个分区。每次更新电子表格时,它们都应该按胜率单独排序。

任何帮助都将不胜感激,谢谢。

答案1

要对表格进行排序,您需要编写 VBA 脚本。一般来说,一个单元格中的公式不能影响另一个单元格的内容(准确地说是另一个单元格的公式;如果其他单元格包含引用它的公式,则一个单元格可以更改其他单元格的值)。

作为一种解决方法,当您要在更新源表(即时间表)后对目标表(即排名)进行排序时,我们可以间接地进行一些排序:

  1. 修改源表,使其自动计算排名
  2. 更新目标表,以便可以通过从源表中查找其内容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%

相关内容