在excel中提取前5个最大值

我有一个excel文件,其中一列对应于玩家的姓名,另一列对应于棒球统计OPS。

OPS Player 1.000 player 1 5.000 player 2 3.000 player 3 1.000 player 4 --- player 5 4.000 player 6 1.000 player 7 --- player 8 1.000 player 9 --- player 10 1.333 player 11 1.000 player 12 2.000 player 13 --- player 14 --- player 15 --- player 16 1.500 player 17 3.500 player 18 1.500 player 19 --- player 20 1.000 player 21 1.000 player 22 0.000 player 23 0.000 player 24 0.500 player 25 0.000 player 26 0.667 player 27 

现在,在Excel中,我需要弄清楚如何创build一个公式,返回具有前5个OPS值的玩家名字的列。 因此,我想查询返回Excel中的5 x 1列向量。 我可以用什么单元格来实现这个function?

而且,鉴于他们将会重复老年退休金计划的价值,我需要这个expression对于关系的强大。

给定一个像这样的数据设置:

排名前5名

单元格D2中的公式并复制下来是:

 =INDEX($B$2:$B$28,MATCH(1,INDEX(($A$2:$A$28=LARGE($A$2:$A$28,ROWS(D$1:D1)))*(COUNTIF(D$1:D1,$B$2:$B$28)=0),),0)) 

即使玩家之间的OPS分数相同,这个公式也是可行的。

有3个function你想看看这里:

  • LARGE – 返回数据集中第k个最大值。
  • INDEX – 从表或范围内返回值或对值的引用。
  • MATCH – MATCH函数在单元格范围内search指定的项目,然后返回范围内该项目的相对位置。

我在Excel中运行了一个示例,其中包含B列中的OPS值和C列中的玩家,如下所示:

Excel示例

  • 在单元格A13到A17中,插入值1到5以指定第n个最高值。
  • 在单元格B13中,添加了以下公式: =LARGE($B$2:$B$11, A13)
  • 在单元格C13中,添加了以下公式: =INDEX($C$2:$C$11,MATCH(B13,$B$2:$B$11,0))
  • 根据A13的值,这些公式得到最高的OPS和玩家排名。
  • 只需select并拖动,将这些公式复制到接下来的4个单元格中,这些单元格将引用列A中的相应排名。

把数据放入一个数据透视表,然后做一个前n个filter

Excel演示

 =VLOOKUP(LARGE(A1:A10,ROW()),A1:B10,2,0) 

在工作表的第一行input此公式,然后拖动到第五行…

它是一个简单的vlookup ,它在数组(A1:A10)查找large数值, ROW()函数给出行数(第一行= 1,第二行= 2等等),并且是查找标准。

注意:您可以将ROW()replace为1,2,3,4,5,如果您在第一行以外有此公式,请确保从row()减去一些数字以获得准确的结果。

编辑:检查领带的结果

这是可能的,你需要添加一个帮手列表,这里是链接 。 不要让我知道,如果事情似乎是凌乱的….

在我看来,一个PT(就像@Nathan Fisher)的情况是一个“没有道理的”,但是我会添加一个列以方便按等级sorting(向上或向下):

SO18528624第一个例子

OPS是作为VALUES(Sum of)两次input的,所以我已经重新命名了列标签,以便更清楚哪个是哪个。 PT位于与数据不同的工作表中,但可能位于同一工作表中。

通过右键单击在该列中select的数据点并将Show Values As...并将Rank Largest to Smallest (还有其他选项),以Base字段作为Player ,并且filter是Value Filters Top 10...一:

SO18528624第二个例子

一旦进入PT,该function的强大function可以很容易地应用于以其他方式查看数据,而不会改变公式(没有一个!)。

在filter中包含的最后一个位置的情况下,包括两个结果(前5个将显示6个或更多个结果)。 排在前两名的玩家之间的平均排名为1 1 3 4 5 5。