3

给定一个包含三列的 Excel 文件(类似于):Group、Number 和 Rank。

在每个组中,他必须将值从最小到最大排列。如果值匹配,它们将获得相同的排名。因此,如果一个值最大,则排名为 1。如果它是第二大的,则排名为 2,依此类推。

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

4

4 回答 4

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)

然后自动填充。

可能有更简单/更好的方法来做到这一点 - 但这肯定会给你你正在寻找的东西:

排名解决方案

于 2012-07-23T21:21:16.850 回答
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

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

于 2012-07-21T08:30:19.407 回答
0

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

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

在此处输入图像描述

于 2012-07-21T09:56:40.647 回答
0

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

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

其中 A2 是第一行。然后我把它一直拖下来。

这为您提供排名 PLUS 一切都在屏幕上进行视觉排序,就像您完成时一样。

于 2012-07-23T02:48:53.870 回答