使用多个条件在Excel中排名

时间:2015-05-09 15:29:49

标签: excel excel-formula

例如,我需要根据总分(C列)创建少数学生的绩效列表,然后在数学中创建更高分(专栏B) -

A        B  C   D
-------------------------
Student1 80 220 1
Student2 88 180 3
Student3 90 180 2

预期的绩效位置在专栏D中给出。

我可以使用RANK函数,但我只能对一列(总数)执行此操作。如果多个学生的总数相等,我找不到任何解决方法。

3 个答案:

答案 0 :(得分:6)

您可以在 D1

中尝试此操作
=COUNTIF($C$1:$C$99,">"&C1)+1+SUMPRODUCT(--($C$1:$C$99=C1),--($B$1:$B$99>B1))

然后复制/填写。 如果这有帮助,请告诉我。

说明

您的第一个标准位于 C列,第二个标准位于 B列。 基本上,首先它计算的条目数($ C $ 1:$ C $ 99)大于条目本身($ C1)。对于排名中的第一个,您将获得,因此您需要为每个结果(+ 1)添加 1 。 在此之前,如果两次具有相同的值,您将获得重复的排名。
因此,您需要添加另一个参数,以根据第二个标准进行一些额外的计算:
要解决这种情况,你需要sumproduct两个数组公式并将结果添加到前一个参数,目标是找到与 $ C $ 1:$相等的条目数。 C $ 99 = C1 并且在第二个标准列中具有更大的值 $ B $ 1:$ B $ 99> B1

您添加 - 以转换 TRUE FALSE < / strong>至 0 s和 1 s,以便您可以将它们相乘:
SUMPRODUCT(--($C$1:$C$99=C1),--($B$1:$B$99>B1))
第一个数组是看你在第一个标准中有多少联系。第二个数组是找到比条目本身更大的值的数量。

注意您可以在列中添加任意数量的条目,但请记住更新公式中的范围,目前设置为 99 ,您可以将其扩展为您想要的任意数量的行。

答案 1 :(得分:2)

有时,帮助列将提供快速且计算效率高的解决方案。将数学标记作为小数添加到总标记应该产生一个将根据您的标准排名的数字。在右侧未使用的列中,在第2行

中使用此公式
=C2+B2/1000

根据需要填写。您现在可以在此{em>帮助列上使用传统RANK function,例如=RANK(D2, D$2:D$9)作为排名序号。

答案 2 :(得分:1)

非常简单(或者,至少比最佳答案提供的更简单)'数学'解决方案:与权重进行线性组合。 做点什么

weighted_marks = 10*colC + colB

然后使用简单的等级函数对加权标记进行排序。

它确实解决了您的问题,提升了您所需的排名。