在Excel中用多个条件进行排名

例如,我需要根据总分( C列)创buildlessmath生的成绩单,然后在math中列出更高的分数( B列)。

 ABCD ------------------------- Student1 80 220 1 Student2 88 180 3 Student3 90 180 2 

预期的优点在D栏中给出。

我可以使用RANK函数,但我只能做一列(总数)。 如果多个学生的总数相等,我找不到任何解决办法。

你可以在D1试试这个

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

然后复制/填写。 让我知道这是否有帮助。

说明

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

您添加TRUEFALSE转换为0 s和1 s,以便您可以将它们相乘:
SUMPRODUCT(--($C$1:$C$99=C1),--($B$1:$B$99>B1))
第一个数组是看你在第一个标准中有多less关系。 第二个数组是查找比条目本身更大的数值。

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

有时候,一个帮助栏将提供一个快速而有效的解决scheme。 将math符号添加到总分数应该产生一个数字,将根据您的标准排名。 在右边未使用的列中,使用第2行中的此公式,

 =C2+B2/1000 

根据需要填写。 你现在可以在这个帮助列上使用传统的RANK函数 ,比如=RANK(D2, D$2:D$9)

非常简单(或者,至less比由最好的答案提供的那个简单得多)'math'解决scheme:与权重进行线性组合。 做类似的事情

 weighted_marks = 10*colC + colB 

然后使用简单的等级函数对加权标记进行分类

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

如果您不想限制标准中使用的行数或数字, Jeeped的方法可以扩展。 您可以在单元格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平衡了双精度数字中可用的53位精度 。 这足以覆盖当前版本的Excel的行限制。