首页 > 解决方案 > (Excel)如何用公式返回第n个最大值的列标题

问题描述

给定如下表格:

大卫 麦克风 丽莎
大卫 50 10 40
麦克风 0 50 50
丽莎 10 40 50

我试图想出一列公式和信息,它们会自动排名和标记。请参阅下面的正确输出示例。

选择行 -> Mike(此单元格由用户定义)
数字
麦克风 50
丽莎 50
大卫 0

基本上,用户应该能够更改右上角的单元格并让表格的其余部分根据该输入自动调整。

在这里,用户在单元格中输入“Mike”,因此公式应该查看标记为“Mike”的行(按顺序排列值 0、50 和 50)并告诉我得分最高的列名称列表,连同他们的分数。

唯一让我绊倒的事情是将一些东西集成到公式中,使其跳过已经放入排名列表的名称。如您所见,那里有 2 个分数为 50。

Microsoft 网站上有一个关于处理关系的页面,但我没有完全掌握他们使用 Countif 的示例,因此我无法将其翻译为我的目的。他们还在他们的示例中使用名称左侧的排名数字,但如果可能的话,我希望这不是必需的。如果自动填充在某些方面对我没有帮助,我不介意手动编写单元格公式。

我知道有办法做到这一点。我玩过这些公式并做了很多研究。我刚刚求助于在 VBA 中进行编码,但我觉得这将是更多的工作。在这一点上,我是如此接近,我觉得我只是错过了一个关键要素。

标签: excelindexingexcel-formulamatchrank

解决方案


如果 Office 365 中有动态公式,那么我们可以使用 SORT:

=SORT(CHOOSE({1,2},TRANSPOSE(B1:D1),TRANSPOSE(INDEX(B2:D4,MATCH(H1,A2:A4,0),0))),2,-1)

Excel 将正确溢出结果。

在此处输入图像描述


对于老年人,我们需要两个公式:

首先按顺序获取值:

=LARGE(INDEX($B$2:$D$4,MATCH($H$1,$A$2:$A$4,0),0),ROW(ZZ1))

把它放在H2中并复制下来。

然后我们需要引用这些值来获得正确的名称:

=INDEX($B$1:$D$1,AGGREGATE(15,7,(COLUMN(INDEX($B$2:$D$4,MATCH($H$1,$A$2:$A$4,0),0))-MIN(COLUMN(INDEX($B$2:$D$4,MATCH($H$1,$A$2:$A$4,0),0)))+1)/(INDEX($B$2:$D$4,MATCH($H$1,$A$2:$A$4,0),0)=H2),COUNTIF($H$2:H2,H2)))

把它放在G2中并复制下来。

在此处输入图像描述


推荐阅读