2012-07-21 122 views
2

给定一个包含三列(类似于this)的Excel文件:Group,Number和Rank。Excel列中的排名值

在每个组中,他必须将数值从最小到最大排列。如果这些值匹配,他们会得到相同的排名。所以如果一个值最大,那么排名将是1.如果它是第二大的,排名将是2等等。

然后,此过程应重新启动第二组值。这项任务如何完成?也许使用数组/冒泡排序? —但我不确定这是正确的方法。

+0

我刚刚发现的Excel的= RANK()功能。 ..这使得为一个给定的组排序一组数字非常容易...但是我怎样才能自动地继续处理每个其他组的数据? – MonuMan5 2012-07-21 02:42:21

+0

看看这个:http://www.mrexcel.com/forum/showthread.php?343375-Rank-based-on-multiple-columns – codechurn 2012-07-21 02:56:03

+0

我找到了某种答案... = SUMPRODUCT(($ A $ 2:$ B $ 21 = A2)*($ B $ 2:$ B $ 21> B2))+ 1 问题是......它不会计算匹配。对于比赛,它应该将它们排列为第二和第二,然后按照下一个排名排序。所以...排名可能是像1,1,2,3,3,4,5 ......类似的东西。如果这是有道理的 – MonuMan5 2012-07-21 04:14:30

回答

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) 

然后自动填写了下来。

有可能是一个更简单/更好的方式来做到这一点 - 但这绝对会给你你在找什么:

Ranking Solution

+0

我想让它工作得很糟糕......出于某种原因,我的计数器一直显示为零。你能告诉我在一个给你一个单元格的公式中会有什么公式吗?也许它不是自动填充正确。 – MonuMan5 2012-07-25 18:26:30

+0

它的工作原理!谢谢你,先生! – MonuMan5 2012-07-26 00:56:51

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。

Formatted as a table

如果格式化数据作为一个表,你可以使用(在Excel 2010中)以下公式:

=1/SUM(IF(([Group]=[@Group])*([Number]=[@Number]);1;0)) 
=SUM(IF(([Number]>[@Number])*([Group]=[@Group]);[Freq];0))+1 

(根据您的设置,您可能需要更换分号)

+0

第一部分不起作用。我收到一条消息,说公式包含错误。 – MonuMan5 2012-07-21 23:23:01

+0

你使用小数点或逗号吗?如果是前者,则替换分号';'在我的答案中用逗号','。我加倍检查,公式起作用。 – martin 2012-07-25 16:33:49

+0

我把分号改为逗号,它不再给我一个错误。但它也不会提供正确的答案。我将在后面发布我的屏幕截图。 =/ – MonuMan5 2012-07-25 18:27:50

0

(刚刚注意到你的评论,但已经写了下面所以可能会上传它,因为它可能对这个问题的未来观众有用)

=SUMPRODUCT(($A$2:$A$18=A2)*($B$2:$B$18>B2))+1

enter image description here

+0

呃...非常非常有趣。当我使用该公式...它不匹配关系的记录。它只是继续下去。 – MonuMan5 2012-07-21 23:18:56

+0

奇怪 - 你可以从截图中看到它在我的xl上做了什么 – whytheq 2012-07-22 13:38:18

0

我做了一个自定义排序与排序是该组列的第一级(从小到大)和排序是值列第二级(最大到最小)。然后在排名栏中我使用公式

=IF(B2=B1,C1,COUNTIF($A$2:A2,A2)) 

其中A2是第一行。然后我一直拖下去。

这给你的排名PLUS一切都在屏幕上视觉排序,因为当你完成。