【问题标题】:Extracting the top 5 maximum values in excel在excel中提取前5个最大值
【发布时间】:2023-03-29 07:33:01
【问题描述】:

我有一个 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 中,我需要弄清楚如何创建一个公式,该公式返回一列具有前 5 个 OPS 值的玩家姓名。因此,我希望查询在 excel 中返​​回一个 5 x 1 列向量。我可以使用什么单元格公式来实现这一目标?

另外,考虑到他们将重复 OPS 值,我需要表达式对平局具有鲁棒性。

【问题讨论】:

  • 如果第5名和第6名并列怎么办?最简单的方法是使用过滤器下拉菜单为前 5 名设置一个数字过滤器,在出现平局的情况下将显示更多值。
  • 我可以使用来自不同选项卡的数据设置过滤器吗?我的公式不会与数据位于同一选项卡上。

标签: excel


【解决方案1】:
=VLOOKUP(LARGE(A1:A10,ROW()),A1:B10,2,0)

在工作表的第一行中键入此公式,然后向下拖动到第五行...

它是一个简单的vlookup,它在数组(A1:A10) 中找到large 值,ROW() 函数给出行号(第一行 = 1,第二行 =2 等等),然后是查找条件。

注意:您可以根据需要将 ROW() 替换为 1,2,3,4,5...如果您在第一行以外的位置有此公式,请确保从 @987654328 中减去一些数字@ 以获得准确的结果。

编辑:检查平局结果

这是可能的,您需要在工作表中添加一个辅助列,这里是link。如果事情看起来很混乱,请告诉我......

【讨论】:

  • 在 vlookup 中列是否必须相邻?在我的示例中它们是,但在我的实际数据集中它们不是。
  • vlookup 的工作方式如下 =VLOOKUP(cellvalue,in Range,Column No,TRUE/FALSE)...所以是的,您需要更改上面示例中的 Column NO (2) 以获得想要的结果...尝试将 2 更改为 3,4 并尝试更改......
  • 你如何绕过领带?因为多个玩家可能拥有相同的 OPS。
【解决方案2】:

您想在这里查看 3 个函数:

我在 Excel 中运行了一个示例,您的 OPS 值在 B 列中,玩家在 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 和 Player。
  • 只需选择并拖动即可将这些公式复制到接下来的 4 个单元格中,这些单元格将引用 A 列中的相应排名。

【讨论】:

  • 你如何绕过可能存在关系的事实?例如,如果玩家我也有 10 作为他们的 OPS。
【解决方案3】:

将数据放入数据透视表并对其进行前 n 个过滤器

【讨论】:

  • 我可以使用来自不同选项卡的数据设置过滤器吗?我的公式不会与数据位于同一选项卡上。
  • 通常情况下,数据透视表将位于数据的单独工作表上。
【解决方案4】:

给定这样的数据设置:

单元格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 分数相同,此公式也适用。

【讨论】:

  • 如果我不将代码放在第二个单元格中,如何调整代码。例如,如果我将您的代码从单元格 D8 开始。
  • D$1:D1的所有实例更改为D$7:D7
  • 感谢非常有用的解决方案。如果玩家重复并且您想使用玩家的总和,任何提示如何修改它?
  • 如果您想要总和,您可以在数据上使用数据透视表,然后过滤前 5 的总和字段
【解决方案5】:

在我看来,PT(如@Nathan Fisher)的情况是“不费吹灰之力”,但我会添加一列以方便按等级(向上或向下)排序:

OPS 两次作为 VALUES (Sum of) 输入,所以我重命名了列标签,以便更清楚地知道哪个是哪个。 PT 与数据在不同的工作表中,但可以在同一个工作表中。

通过右键单击该列中选择的数据点和Show Values As...Rank Largest to Smallest(还有其他选项)设置排名,基本字段为Player,过滤器为Value Filters,@ 987654330@一:

一旦在 PT 中,该功能的强大功能可以很容易地应用于以许多其他方式查看数据,而无需更改公式(没有公式!)。

如果过滤器中包含的最后一个位置相同,则包含两个结果(前 5 位将显示六个或更多结果)。仅两名玩家之间排名第一的平局将显示为前 5 名的1 1 3 4 5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2022-07-27
    • 1970-01-01
    • 2020-09-12
    • 2021-05-06
    相关资源
    最近更新 更多