根据4列排名

时间:2014-07-23 14:00:37

标签: excel excel-formula excel-2010 ranking

我正在使用excel中的数据库...我需要通过考虑4个联赛得分来对得分者进行排名。我希望根据优先级从1到4的联赛得分排名,即在联赛1中得分最多的人将是第1名如果在联赛1中得分相同则考虑联赛2分等等......我的表如下 - 如果你知道帮助我为我的桌子排名...

..........甲............乙...............Ç....... ......... d ..................Ë..............˚F

======= ======= ======= ======= ================

1 ....... ID ......得分1 ......得分2 ......得分3 ......得分4 ......秩

2 ...... N01 .... 12 ............... 4 ................. 3 ................ 18
3 ...... N02 .... 15 ............... 4 ................. 6 ... ............. 13
4 ...... N03 .... 12 ............... 5 ................. 4 ... ............. 11
5 ...... N04 .... 12 ............... 4 ................. 3 ... ............. 3
6 ...... N05 .... 15 ............... 5 ................. 5 ... ............. 8
7 ...... N06 .... 16 ............... 3 ................. 2 ... ............. 3
8 ...... N07 .... 12 ............... 4 ................. 5 ... ............. 12
9 ...... N08 .... 10 ............... 5 ................. 4 ... ............. 9
10 ..... N09 .... 13 ............... 6 ................. 4 .... ............ 17
11 ..... N10 .... 10 ............... 5 ................. 4 .... ............ 5

对于基于2个字段的排名,我使用了这些公式:

F2至F11的中间总数 -

= RANK(B2,B $ 2:乙11,0 $)+ SUMPRODUCT((B2 = B $ 2:乙$ 11)*(C2

和G2中的排名 - = RANK(F2,F $ 2:F 11,1 $)

但我无法根据4列进行排名......帮助PLZ

2 个答案:

答案 0 :(得分:0)

当然,最简单的方法就是Data> Sort并进行4级排序(Score1,...,Score4),但我有点喜欢这个问题,看看我是否能用公式做到这一点 - 一个有趣的挑战......

在没有VBA的情况下,我能想到的最好的方法是添加几个辅助列。

为此,请将以下公式放在:

F2: =B2
G2: =F2 & " - " & SUM(IF(B2=B$2:B$11,IF(C2>=C$2:C$11,1,0)))

使用 ctrl + shift + 输入作为数组公式输入G2

然后,将G2拖到I2,然后向下填充F:I列以查找数据集。

现在,如果您根据列I进行排序,您将根据需要订购数据。


当然,你可以在每行一个单元格中使用一个大而丑的公式:

=B2& " - " & SUM(IF(B2=B$2:B$11,IF(C2>=C$2:C$11,1,0)))& " - " & SUM(IF(C2=C$2:C$11,IF(D2>=D$2:D$11,1,0)))& " - " & SUM(IF(D2=D$2:D$11,IF(E2>=E$2:E$11,1,0)))

但这似乎是一个更好的解决方案恕我直言。


希望这可以解决问题!


修改

在回复下面的评论时,要获得排名,您需要增加2个列(男孩,这会变得很长:p)......

加入以下内容:

J2: =SUMPRODUCT((I2>=$I$2:$I$11)+0)+1
K2: =RANK(J2,$J$2:$J$11,1)+COUNTIF($J$2:OFFSET(J2,0,0),J2)-1

这将使用非数字数据为您提供排名。

希望这完全符合你的标准,但它确实很丑陋......就像我说的,我很享受这个挑战,但更好的方法是创建一个VBA功能,照顾这对你来说......

答案 1 :(得分:0)

如果您知道分数有限(例如总是低于100),您可以计算加权分数,如

WEIGHTED_SCORE = (((SCORE1*100) + SCORE2)*100 + SCORE3)*100 + SCORE4
               = SCORE1*100^3 + SCORE2*100^2 + SCORE3*100 + SCORE4

然后根据加权分数排名