在Excel列中排列值

给定一个包含三列(与此类似)的Excel文件:组,数字和等级。

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

然后这个过程应该重新启动第二组值。 这个任务如何完成? 也许使用数组/冒泡sorting? – 但我不知道这是正确的方法。

我想我有你正在寻找的解决scheme – 我不得不三列。

假设你有A组中的组和B组中的分数; 你将要先按组进行sorting,然后按比分进行sorting。

那么你会想要继续前面提到的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) 

然后自动填充。

可能有一个更简单/更好的方法来做到这一点 – 但这肯定会给你你想要的:

排名解决方案

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

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

在这里输入图像描述

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

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

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

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

我用一个额外的列解决了你的问题:

在“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中input时需要按Shift + Ctrl + Enter。

格式化为表格

如果将数据格式化为表格,则可以使用(在Excel 2010中)以下公式:

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

(根据您的设置,您可能需要用逗号replace分号。)