根据多项标准在 Excel 中排名

Ranking in Excel with multiple criteria

例如,我需要根据总分(第 C 列)创建少数学生的优点列表,然后是数学中的较高分数(第 B 列)-

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

D 列中给出了预期的优秀职位。

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

你可以在 D1

试试这个
=COUNTIF($C:$C,">"&C1)+1+SUMPRODUCT(--($C:$C=C1),--($B:$B>B1))

然后copy/fill下来。 让我知道这是否有帮助。

说明

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

你加上--转换为TRUEFALSE0s 和 1s 这样你就可以将它们相乘:
SUMPRODUCT(--($C:$C=C1),--($B:$B>B1))
第一个数组是看你在第一个条件中有多少个并列。第二个数组是查找比条目本身更大的值的数量。

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

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

=C2+B2/1000

根据需要填写。您现在可以在此 帮助程序 列上使用常规 RANK function,例如 =RANK(D2, D:D) 作为您的排名序数。

如果您不喜欢限制条件中使用的行数或数字,可以扩展。您可以在单元格D2到L2中使用以下公式,假设有三个条件,第一个在A列,第二个在B列,第三个在C列:

=RANK($A2,$A:$A,1)
=RANK($B2,$B:$B,1)
=D2*2^27+E2
=RANK(F2,F:F,1)
=RANK($C2,$C:$C,1)
=G2*2^27+H2
=RANK(I2,I:I,1)
=J2*2^27-ROW()
=RANK(K2,K:K,0)

公式要抄下来。结果在 L 列中。使用行号打破平局。

如果您想添加第四个条件,可以在准备好上述公式后执行以下操作:

  1. 在 C 列和 D 列之间添加新标准。
  2. 在 I 列和 J 列之间插入三个新列。
  3. 将列 G:I 复制到新列 J:L。
  4. 将 G 列复制到 M 列,覆盖其内容。
  5. 更改 L 列中的公式以指向新标准。

公式中使用的因子 2^27 平衡了 double-precision numbers 中可用的 53 位精度。这足以覆盖 Excel.

当前版本的行限制

非常简单(或者至少比最佳答案提供的方法简单得多)'math'解决方案:使用权重进行线性组合。 做一些像

weighted_marks = 10*colC + colB

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

它确实解决了你的问题,建立了你需要的排名。