gpt4 book ai didi

vba - 从 Excel 中具有多个获胜者的行中选择得分获胜者

转载 作者:行者123 更新时间:2023-12-03 00:19:05 24 4
gpt4 key购买 nike

我有一组如下数据,想要自动找到获胜者。

A B C D E 
1 2 3 4 5

我使用了INDEX函数:

INDEX($A$1:$E$1,1,MATCH(LARGE($A$2:$E$2,1),$A$2:$E$2,0))

这确实告诉我获胜者是 E。

但是,假设下一个数据集表明 A 和 E 具有相同的分数:

A B C D E 
5 2 3 4 5

使用上述公式,我无法同时获得 A 和 E 作为获胜者...

是否可以嵌套 IF 函数和 concact,以便在我的获奖者专栏中可以显示:A、E?

最佳答案

临时数组公式

向下复制数组公式怎么样(例如从单元格 F2 开始):

=SUM(LARGE(IF(A2:E2=MAX(A2:E2),COLUMN(A2:E2),0),COLUMN(A2:E2))*10^(COLUMN(A2:E2) )-1)

(注意大括号 {} 指示数组公式的正确输入!)

结果返回例如15,即根据您的示例数据 5 2 3 4 5(在 A:E 列中),数字 1 显示第 5 列的第一个和下一个数字为获胜。5 2 3 4 5。/p>

如果发生例如A:E 列中的 1 5 5 4 5 结果将是 ► 235 显示第 2、第 3 和第 5 列获胜。

*注意:限制为 10 个单位数字(10 列),因为它在此示例中使用十进制数字系统(可以修改)。

编辑 1 - 显示带有列字母的逗号分隔字符串

使用重复的SUBSTITUTE函数并不是最优雅的,但它可以完成有限数量的列的工作:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUM(LARGE(IF(A2:E2=MAX(A2:E2),COLUMN(A2:E2),0),COLUMN(A2:E2))*10^(COLUMN(A2:E2)-1)),1,"A,"),2,"B,"),3,"C,"),4,"D,"),5,"E,")&"#",",#","")

例如发生A:E 列中的 1 5 5 4 5 将导致 ► B,C,E 将获胜的列字母显示为逗号分隔的字符串.

编辑 2 - 使用十六进制数字系统的精简替代方案(不带逗号)

此方法利用了以下事实:十六进制系统使用字母字符 A 到 F 对数字 > 9 进行编码,并简单地将 9 添加到找到的列值中:

=DEC2HEX(SUM(LARGE(IF(A2:E2=MAX(A2:E2),COLUMN(A2:E2)+9,0),COLUMN(A2:E2))*16^(COLUMN(A2:E2)-1)))

例如发生A:E 列中的 1 5 5 4 5 会通过巧妙地使用十六进制得到 ► BCE数字转换。

享受它:-)

关于vba - 从 Excel 中具有多个获胜者的行中选择得分获胜者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51891756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com