excel - (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 中进行编码,但我觉得这将是更多的工作。在这一点上,我是如此接近,我觉得我只是错过了一个关键要素。
解决方案
如果 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中并复制下来。
推荐阅读
- c# - 如何使用 Roslyn 查找被调用方法的参数是变量(通过“var/string”)还是内联字符串
- python - VSCode pylint 不显示相对导入失败
- algorithm - 从列表中选择单词,使唯一字母的数量最少
- r - 将 RStudio 中呈现的查看器对象保存为图像
- java - 如何将值从 MainActivity 传递到 ServiceConnection?
- php - 从票证创建日期 php 定义到期日期
- r - 如何在R中的“cv.rq.pen”函数中提取系数?
- c# - 玩家在移动平台上无法移动
- coldfusion - 检查是否有任何字段与数据库值不同
- libc - _wfullpath() 的跨平台版本