显示电子表格中包含最高值的列标题

显示电子表格中包含最高值的列标题

因此,我有一个名称和值的列表,链接在这里:

电子表格

理想情况下,我想在电子表格中找到最高值,然后显示总体值最高的人的姓名。

到目前为止,比如说,在‘星期二’行中,我已经能够选择最高值,并使用此公式获得具有最高值的名字‘Frank’...

=INDEX($B$1:$M$1,MATCH(MAX(B4:M4),B4:M4,0))

...然后根据其他每个“日子”进行相应的更改。

我想要做的是选出所有“天数”中绝对值最高的人的名字。

在所附的例子中,它将是“Joseph”,其值为“589”。

我知道我可以使用 MAX(B2:M8) 来获取单元格中显示的最高值“589”,这很完美,但现在我想显示获得最高值的人的实际姓名,在本例中为“Joseph”。

我该如何做呢?

任何帮助都将不胜感激。谢谢。

答案1

1]B1:M1安置人的名字和B2:M8安置你的价值

2] 获得当天最高价值的人的姓名

在 中O2输入公式:

=INDEX(B1:M1,SUMPRODUCT((B2:M8=MAX(B2:M8))*COLUMN(A1:L1)))

在此处输入图片描述

编辑#.1

如果最大值有重复,则公式更改为 >>

在 中O2输入数组公式(Shift+Ctrl+Enter)

=TEXTJOIN(", ",1,INDEX(B1:M1,N(IF(1,AGGREGATE(15,6,COLUMN(A1:L1)/(B2:M8=MAX(B2:M8)),ROW(INDIRECT("1:"&COUNTIF(B2:M8,MAX(B2:M8)))))))))

在此处输入图片描述

答案2

如果您想尝试用户定义的函数,这个可以完成这项工作:

Function GetHighEarner(Target As Range) As String

Dim MyStr As String
Dim MyMax As Long, i As Long
Dim MyArr As Variant

MyArr = Target
MyMax = Application.Max(MyArr)
For i = LBound(MyArr, 2) To UBound(MyArr, 2)
    If Application.Max(Application.Index(MyArr, , i)) = MyMax Then
        If Len(MyStr) < 1 Then
                MyStr = MyArr(1, i)
                Else
                MyStr = MyStr & ", " & MyArr(1, i)
        End If
    End If
Next i

GetHighEarner = MyStr

End Function

只需按 ALT F11 进入开发人员菜单,插入模块并将函数粘贴到模块中,然后在工作表中使用:=GetHighEarner(B1:M8)(从您的示例来看,任何范围都可以)在工作表中正常使用。该函数假定您已在范围内包含标题行(名称)。将返回与范围内的最高值匹配的任何名称。

答案3

考虑不要在一个公式中完成所有操作。在每一列中为该列创建 MAX(),例如在第 1 行。然后,您可以为第 1 行创建一个 Max,并使用查找来查找第 1 行中哪一列具有该值。

如果有多列具有相同的最大值,则当然只会显示第一列,因此您需要研究一些解决平局的方法。

答案4

在此处输入图片描述

  • 单元格中的公式F44

    =IFERROR(INDEX($B$43:$E$43,MATCH(MAX($B$44:$E$50),B44:E44,0)),"")
    

根据需要调整公式中的单元格引用。

相关内容