使用基于动态相邻列值的excel rank函数

时间:2014-02-01 22:13:45

标签: excel vba rank

假设; 我有下表:

Group   Nam ID  Score    Rank
London  B   1   88
London  C   2   7
London  A   3   45
London  D   4   23
London  E   5   2
London  F   6   56
Sydney  C   1   7
Sydney  B   2   98
Sydney  A   3   12
Tokyo   R   1   45
Tokyo   Z   2   23
Tokyo   A   3   56
Tokyo   G   4   86
Tokyo   E   5   19

我想用公式填充排名列,以便我可以单独获得每个组的排名。我目前使用的公式是排名列的第一行是:

=RANK(D2,$D$2:$D$7,1)

我可以将公式拖到伦敦小组的末尾,但是对于悉尼小组或任何新组我输入新公式来定义排名公式的参考范围参数。

有没有简单的方法可以做到这一点?这样我就可以将单个公式输入到Rank列的第一行并拖动到表格中...... 我要做超过17000条记录。 一些规则;组列已排序,id列按asc。

排序

感谢

2 个答案:

答案 0 :(得分:3)

  

一些规则:对group列进行排序,将id列排序为asc。

试试这个公式:

=RANK(D2,INDEX(D:D,MATCH(A2,A:A,0)):INDEX(D:D,MATCH(A2,A:A,0)+COUNTIF(A:A,A2)-1),1)

其中A:A是您的“群组”列。

答案 1 :(得分:2)

一种可能性是在第2行中复制使用此公式

=COUNTIFS(A:A,A2,D:D,"<"&D2)+1

通过计算与当前行在同一组中并且分数低于当前行分数的行,您实际上获得“升序排名”但排名从零开始,因此+1使排名从1开始为按照惯例

对于排序值,

simoco's解决方案可能更有效 - 即使没有排序

,这也有效