在Excel中,我得到的结果数据在与下面类似的列表中排序。我正在寻找对“类别”列进行排名的公式。我提出了以下似乎可行的方法,但未考虑“唯一的” RaceID列。
={COUNTIF(Class,"<"&C2)+SUM(IF(C2=$C$2:C2, 1, 0))-(SUMPRODUCT(--(C2>C$2:C$11))+1)}
“类别”是指“ C:C”。
不幸的是,即使丹尼尔(Daniel)是RaceID 0002的比赛获胜者,这也会为E7单元中的A类产生“ 4”的结果。
第五列是所需的输出。
Col A Col B Col C Col D Col E
RaceID Overall Pos Class Name Class rank
0001 1 A Jack 1
0001 2 A Matt 2
0001 3 A Daniel 3
0001 4 B Gordon 1
0001 5 B Phillip 2
0002 1 A Daniel 1
0002 2 A Matt 2
0002 3 B Günther 1
0002 4 B Gordon 2
0002 5 A Jack 3
我需要的是能够将这个公式扩展为仅在RaceID值与当前行匹配时排名。我相信这应该不会那么困难,但是我正在努力完成公式。
最佳答案
如果我答对了,那么这个非数组公式将起作用:
=COUNTIFS(A:A,A2,B:B,"<"&B2,C:C,C2)+1
编辑
如果您的excel不支持
COUNTIFS
,那么此公式也可以:{=SUM(IF(($A$1:INDEX(A:A,MATCH("zzz",D:D))=A2)*($C$1:INDEX(C:C,MATCH("zzz",D:D))=C2),$B$1:INDEX(B:B,MATCH("zzz",D:D))<B2)*1)+1}
这是一个数组公式,必须使用ctrl + shift + enter进行确认。