给定一个包含三列(类似于this)的Excel文件:Group,Number和Rank。
在每组中,他必须将值从最小到最大排列。如果值匹配,则获得相同的排名。因此,如果一个值是最大的,那么等级将是1.如果它是第二大的,则等级将是2,依此类推。
然后,此过程应重新启动第二组值。如何完成这项任务?也许使用数组/冒泡排序?但我不确定这是正确的方法。
答案 0 :(得分:1)
我想我有你想要的解决方案 - 我必须在三列中完成它。
假设您在A栏中有该组,而在B组中得分;你想先按小组排序然后按分数排序。
然后,您将要继续将前面提到的公式放在C2列中:
=SUMPRODUCT(($A$2:$B$25=A2)*($B$2:$B$25>B2))+1
然后自动填充。
然后你想在单元格D2中放置一个计数器:
=IF(COUNTIFS($A$2:A2,A2,$B$2:B2,B2)=1,0,1)
然后自动填充。
然后你想把这个等式放在单元格E2中:
=IF(C2<>C1,C2-SUMIF($A$2:A2,A2,$D$2:$D$25),C2)
然后自动填充。
可能有一种更简单/更好的方法可以做到这一点 - 但这肯定能满足您的需求:
答案 1 :(得分:0)
我用一个额外的列解决了你的问题:
在“C”列中,您必须使用此公式得出给定组中数字频率的倒数(假设值从第2行到第10行):
=1/SUM(IF(($A$2:$A$10=A2)*($B$2:$B$10=B2);1;0))
然后在下一栏(D)中,您可以通过在C中汇总值来获得所需的排名:
=SUM(IF(($B$2:$B$10>B2)*($A$2:$A$10=A2);$C$2:$C$10;0))+1
两个公式都是数组公式(公式?),在Excel中输入时需要按Shift + Ctrl + Enter。
如果将数据格式化为表格,则可以使用(在Excel 2010中)以下公式:
=1/SUM(IF(([Group]=[@Group])*([Number]=[@Number]);1;0))
=SUM(IF(([Number]>[@Number])*([Group]=[@Group]);[Freq];0))+1
(根据您的设置,您可能必须用逗号替换分号。)
答案 2 :(得分:0)
(刚刚注意到你的评论,但已经写了以下内容,所以也可以上传它,因为它可能对此问题的未来观众有用)
=SUMPRODUCT(($A$2:$A$18=A2)*($B$2:$B$18>B2))+1
。
答案 3 :(得分:0)
我做了一个自定义排序,第一级排序是组列(从最小到最大),第二级排序是值列(从最大到最小)。然后在排名栏中我使用了公式
=IF(B2=B1,C1,COUNTIF($A$2:A2,A2))
其中A2是第一行。然后我把它一直拖下来。
这为您提供等级PLUS一切都在屏幕上以视觉方式排序,就像您完成时一样。