在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对于关系的强大。
给定一个像这样的数据设置:
单元格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列中的玩家,如下所示:
- 在单元格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
=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(向上或向下):
OPS
是作为VALUES(Sum of)两次input的,所以我已经重新命名了列标签,以便更清楚哪个是哪个。 PT位于与数据不同的工作表中,但可能位于同一工作表中。
通过右键单击在该列中select的数据点并将Show Values As...
并将Rank Largest to Smallest
(还有其他选项),以Base字段作为Player
,并且filter是Value Filters
Top 10...
一:
一旦进入PT,该function的强大function可以很容易地应用于以其他方式查看数据,而不会改变公式(没有一个!)。
在filter中包含的最后一个位置的情况下,包括两个结果(前5个将显示6个或更多个结果)。 排在前两名的玩家之间的平均排名为1 1 3 4 5
5。