如何制定一个止于前3、5或10的智能排名系统?

问题描述 投票:0回答:1

我在Excel中制定了一个排名系统,当满足一定条件时停止。这一切都基于 if 条件。以下是重要条件列表:

成绩必须大于或等于75才有资格参加排名。

如果有相似的成绩(2个或更多),他们的排名应该相同。例如,成绩是(99,98,98,97),他们的排名应该分别是(1,2,2,3)

如果排名系统超过了前三名而无法进入前五名,则应该只停留在前三名。同样适用于前 5 名,但无法完成前 10 名。例如,成绩为 (98, 97, 97, 83, 78, 74, 74),其排名应为 (1, 2, 2, 3, [BLANK], [ BLANK]、[BLANK]),因为排名系统应该只计算前 3、5 或 10 名。 78 仍然在排名中合格,但没有更多低于它的成绩合格,因此排名仅停留在前 3 名。

这是我的公式:

=IF(OR(N2<75, P1=""), "", IF(P1=3, IF(N2=N1, P1, IF(N3>75, P1+1, "")), IF(P1=5, IF(N2=N1, P1, IF(N6>75, P1+1, "")), IF( P1=10, IF(N2=N1, P1, ""), IF(N2=N1, P1, P1+1)))))

它位于第二行 (P2),只有在其上方 (P1) 存在值时才会起作用。我的公式的问题是,如果有几个相似的等级(3个或更多),它将继续排名。

我希望有一个替代的排名公式,或者是否可以这样做,或者是否可以应用于包括第一列(P1)在内的所有列。

excel excel-formula
1个回答
0
投票

这将帮助您入门。假设您的数据位于单列中,未排序(例如 A 列): 旁边添加一个排序列:

=FILTER( SORT(A:A , , -1) , A:A<>"")

您可以调整单元格范围,但过滤器会剔除空单元格。

或者您已经可以整理出低于阈值的值:

=过滤器( 排序(A:A , , -1) , (A:A<>"")*(A:A>=75))

接下来,您可以在下一栏中使用 RANK.EQ 为他们指定排名号码:

=IFERROR(RANK.EQ(B1,B:B) , "")

下拉 20 个左右的单元格(以确保其中包含双打单元格)。

现在这还不是完整的解决方案,我还没弄清楚如何让它停止在 3、5 或 10;但我最好的猜测是你可以用 IF 语句和 XMATCH 来实现,今天晚些时候我会尝试找出一个(如果你还没有得到另一个/更多的最终答案)。

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.