使用Rank功能打破打破

时间:2016-09-25 10:10:24

标签: excel excel-vba excel-formula ms-office vba

我有一张学生的成绩单,在那里我计算了学生获得的总数。接下来,我想根据总数对它们进行排名,无论它在哪里重复,学生在数学中获得更多数字(E9:E58)都将优先考虑,

如何完成它?

我的总成绩从U9到U58,数学成绩从d9到d58。

我使用过这个公式:

=Rank(u9,u9:u58,1)

我陷入了如何在排名功能中使用if条件。

请帮忙。

提前致谢....

4 个答案:

答案 0 :(得分:1)

在这种情况下,一种调整方法是使用SUMPRODUCT函数。您需要使我的示例适应您的数据范围。在下面的示例中,您不需要E:F列。它们只在那里,所以你可以更好地了解如何完成调整。

调整功能:

=SUMPRODUCT((C2=Totals)*(B2>Maths))

adj Rank功能

D2: =RANK(C2,Totals,1)+SUMPRODUCT((C2=Totals)*(B2>Maths))

enter image description here

答案 1 :(得分:1)

假设,总得分为Column U,数学得分为Column E,,您可以使用Ron的解决方案:

=RANK(U9,U$9:U$58)+SUMPRODUCT((U$9:U$58=U9)*(E$9:E$58<E9))

在要显示Rank的列的第9行中输入上面的公式,然后将其向下拖动/复制到第58行。

答案 2 :(得分:0)

这更多是算术方法。我会添加一个名为adjust total的列。

AdjTotal = Total + (Maths Score / Max possible Maths Score) * 0.9

然后使用此调整后的得分列进行排名。

调整将在总数的1以下添加一小部分,并在有一个时帮助打破平局。由于调整永远不会超过0.9,因此在没有平局时不会影响排名。

假设数学的最高得分为100,请使用此

V9 = U9 + D9/100*0.9

将V2复制到V59

W9 = RANK(V9, V$9:V$59, 1)

复制W9。

答案 3 :(得分:0)

您可以通过运行通常的 RANK() 方法,然后将 RANK() 方法添加到与当前行相关联的其他行匹配的过滤集上来实现。由于对决胜局的 RANK() 呼叫将从 1 开始,因此您需要减去 1 以进行补偿。

最终结果看起来像:

=RANK(U9, U$9:U$58, 1) + RANK(D9, FILTER(D$9:D$58, U$9:U$58=U9)) - 1