Excel - 返回最大值的列标题(如果最大值重复则返回随机列)

Excel - 返回最大值的列标题(如果最大值重复则返回随机列)

我正在尝试编写一个公式,其中 Excel 查找一行并返回最大值的列标题,但如果存在重复的最大值,则随机返回其中一个匹配的列标题。我已经让这个INDEX MATCH MAX公式从左到右返回最大值的第一个实例,但需要弄清楚是否返回随机重复项(如果存在)。

我已找到能够返回第二高值的东西 - 但再次从左到右看是有偏见的。

在此处输入图片描述

答案1

RANDBETWEEN(1, COUNTIF(..., MAX))方法是正确的,但公式可以通过使用数组 SMALL 或 AGGREGATE 与 COUNTIF 提供来简化数字指向结果列标题。

 =INDEX(A$1:M$1,AGGREGATE(15,7,COLUMN(A1:M1)/(A3:M3=MAX(A3:M3)), RANDBETWEEN(1, COUNTIF(A3:M3,MAX(A3:M3)))))

在此处输入图片描述

如上所述,RANDBETWEEN 是一个易失性函数,只要任何打开的工作簿中的任何内容发生变化,它就会重新计算。

答案2

如果你有使用权要实现该TEXTJOIN功能需要几个步骤:

  • 首先,我们需要知道哪些品牌满足该行的标准MAX,并将这些名称连接起来:

    =TEXTJOIN(",",TRUE,IF(A3:M3=MAX(A3:M3),A1:M1,""))
    

笔记这是一个数组公式,需要确认CtrlShiftEnter

  • 第二步,获取 1 至具有该MAX数字的品牌数量之间的随机数:

    =RANDBETWEEN(1,COUNTIF(A3:M3,MAX(A3:M3)))
    
  • 现在我们已经得到了实现公式所需的一切这里我们可以nth从字符串中提取单词。我们将使用逗号作为单词分隔符,而不是空格(您的品牌可能包含空格)。因此,如果我们将所有公式放在一起:

    =TRIM(MID(SUBSTITUTE(TEXTJOIN(",",TRUE,IF(A3:M3=MAX(A3:M3),A1:M1,"")),",",REPT(" ",LEN(TEXTJOIN(",",TRUE,IF(A3:M3=MAX(A3:M3),A1:M1,""))))),(RANDBETWEEN(1,COUNTIF(A3:M3,MAX(A3:M3)))-1)*LEN(TEXTJOIN(",",TRUE,IF(A3:M3=MAX(A3:M3),A1:M1,"")))+1,LEN(TEXTJOIN(",",TRUE,IF(A3:M3=MAX(A3:M3),A1:M1,"")))))
    

现在,这将为您提供一个满足MAX该行值标准的随机品牌名称。


按照提供的链接查看您的 Excel 订阅是否允许您访问TEXTJOIN。另请注意,由于公式 ( ) 中有一个易失性函数RANDBETWEEN,因此该公式将不断重新计算。

相关内容