排名基于4列

我在excel的数据库上工作…我需要考虑4个联赛的得分排名。我想排名根据联赛的优先级从1到4,谁在联赛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

当然,最简单的方法就是做Data > Sort并且执行4级sorting(Score1,…,Score4),但是我很喜欢这个问题,看看我能否用公式来做 – 一个有趣的挑战…

我能想到的最好的方法就是在没有VBA的情况下添加一些帮助列。

要做到这一点,把下面的公式:

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

并使用Ctrl + Shift + Enter键inputG2作为数组公式。

然后,将G2拖动到I2 ,然后填充F:I列作为数据集。

现在,如果您根据第一列进行sorting,您将按照需要sorting数据。


当然,你可以用一个单元格中的每个单元格来制作一个大而丑的公式:

 =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))) 

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


希望这个窍门!


编辑:

为了回应你的评论,为了获得排名,你需要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 

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

希望这完全符合你的标准,但它确实是相当丑陋的…就像我说的,我喜欢这个挑战,但更好的方法是创build一个VBA函数,为您照顾这个…

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

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

然后根据加权得分进行排名