excel中排名时总分相同时按照其中一项的分数高低再排名

excel中排名时总分相同时按照其中一项的分数高低再排名
总分相同时,胜率高的排名靠前;
胜率相同时,胜场高者排名靠前。
如何通过公式实现呢?如图所示
如图,首先需要将C列进行排名,C列分数相同者比较G列胜率,G列相同者比较D列胜场,总人数73人。求公式。

  在E2中输入公式:

  =SUMPRODUCT(--(MMULT($B$2:$D$23,10^{4;2;0})>SUM($B2:$D2*10^{4,2,0})))+1

  下拉复制公式


  自己根据实际数据行修改公式


  对于第2张贴图及你提到共73人(到第80行),则在H8中输入公式:

  =SUMPRODUCT(--(MMULT($C$8:$G$80,10^{4;0;-10;-10;2})>SUM($C8:$G8*10^{4,0,-10,-10,2})))+1

  下拉复制到H80

追问

验证之后很正确,可以给我讲解一下么?

追答

  MMULT是矩阵乘法,函数mmult(arry1,arry2)中两个参数,分别代表两个阵列,对于矩阵乘法,按数学规定,两个矩阵相乘,第1矩阵的列数必须与第2矩阵的行数相等,具体请自己去复习下高等数学的矩阵乘法。提供的公式中,第2 个参数人为给出10^{4;0;-10;-10;2},即分别是10的方次数,用分号(;)即表示是得到一个列内存数组——一个1列5行的矩阵。矩阵$C$8:$G$80与之相乘,即每一行均与列内存数组相乘后求和,就是对C至G列分别扩大不同的倍数,考虑第1排名的扩大倍数最强——C列——总分扩大到10^4倍,考虑第2排名的G列扩大到10^2倍,D列不扩大。因为EF列不需考虑,所以除以一个相当大的数,以消除其影响(如果不是夹在中间,根本不要列到矩阵中来)。SUM($C8:$G8*10^{4,0,-10,-10,2}则是数据所在行自身一行按同样倍数扩大后求和的结果。前面的所有行(矩阵相乘每行的结果)与本行来比较大小,得到有多少行的结果比该行的结果大,大的排在前面,再加上1就是该行的排名了。
  比较的结果是逻辑值true或false,加上--后就分别得到数字1或0。

追问

看来我还是要好好的去复习一下矩阵了,多谢,不过还是有一个问题,假设我把胜率这一列放到C和D之间,公式又应该是怎样的?是不是会相对简单一些?

追答

原则,排名优先的列,乘的权重就大,以此来处理就是了。

追问


我调整了一下,现在是比较C、D、E3列,从第5行开始到第77行结束。括号里的数字应该做怎样调整?假设之后行数增加,是否直接取数到结束行为止即可?麻烦直接给我公式,我再慢慢研究。。多谢,到时采纳为最佳并提高悬赏。。

追答

=SUMPRODUCT(--(MMULT($C$5:$E$77,10^{4;2;0})>SUM($C5:$E5*10^{4,2,0})))+1
按Ctrl+Shift+Enter三键输入数组公式
行数变化时,修改公式中的77到与实际行号一致,公式中大括号内的数字个数与列数相同。4、2、0并一定非是这三个数,只要有差别,差别的大到足以能产生对应的列对排名的影响就行了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-17

数据-排序

主关键字 选总分

次要关键字选胜率

次要关键字选 胜场

第2个回答  2015-07-17
=MATCH(b2+c2%+d2%%%,LARGE($b$2:$b$23+$c$2:$c$23%+$d$2:$d$23%%%,ROW($1:$22)),)
数组三键结束追问

百分号是起到什么作用的?ROW($1:$22),这里是排位?如果人数比较多且最后一名相同成绩人数比较多,应该如何填写?》

追答

=MATCH(b2+c2+d2%%+row()%%%%,LARGE($b$2:$b$23+$c$2:$c$23+$d$2:$d$23%%+row($1:$22)%%%%,ROW($1:$22)),)
数组三键结束

追问

如图,首先需要将C列进行排名,C列分数相同者比较G列胜率,G列相同者比较D列胜场,总人数73人。求公式。

追答

=MATCH(c8+g8+d8%%%+row()%%%%,LARGE($c$8:$c$80+g$8:$g$80+$d$8:$d$80%%%+row($8:$80)%%%%,ROW($1:$73)),)

相似回答