Excel -返回表中三个组之一中得分最高者的姓名

4jb9z9bj  于 2023-02-14  发布在  其他
关注(0)|答案(4)|浏览(186)

这可能是其中一个问题,有一个非常简单的解决方案。
出于安全考虑,我不能详细说明我的数据的具体情况,但可以推测:
我有三组人,分为三组--"红"、"蓝"和"绿"。每个人都有一个分数,并且都包含在一个表中。我需要一个公式来返回每个组中得分最高的成员的名字(相对于总体得分最高的成员),并且我不能添加任何帮助器列。
提前谢谢你!:)
我试过使用XLOOKUP来查找每个组的MAX值,但是结果返回的是第一个匹配该分数的人--他可能在不同的组中。我还试过使用Index/Match来匹配最高的MAXIFS分数,直到我在表中使用它,然后它就崩溃了。

ca1c2owp

ca1c2owp1#

尝试FILTER()与其他几个功能。

=INDEX(SORT(FILTER($A$3:$C$13,$B$3:$B$13=E5),3,-1),1,{1,3})

要通过单个公式获取所有结果并动态溢出结果,请尝试-

=HSTACK(UNIQUE(B3:B13),
BYROW(UNIQUE(B3:B13),LAMBDA(x,INDEX(SORT(FILTER(A3:C13,B3:B13=x),3,-1),1,1))),
BYROW(UNIQUE(B3:B13),LAMBDA(x,INDEX(SORT(FILTER(A3:C13,B3:B13=x),3,-1),1,3))))

huus2vyu

huus2vyu2#

您可以使用透视表获取所需的输出:

只需将字段GroupName放入行部分,将Score放入值部分,然后在字段Name组上应用筛选器值,选择最后一个选项TOP 10并将其设置为仅显示前1个:

[Filter data in a PivotTable](https://support.microsoft.com/en-us/office/filter-data-in-a-pivottable-cc1ed287-3a97-4e95-b377-ddfafe79fa8f)

如果有公式,为什么要使用数据透视表?因为如果有任何关系,数据透视表将显示这些值,而公式不会!
例如,假设Collin也像Arturo一样获得46分。它们都是最高值,因此都是第一名。数据透视表将显示以下内容:

易于更新,错误少。

v9tzhpje

v9tzhpje3#

MaxIFS()的救援:
这个公式是:

=MAXIFS(B1:B8,A1:A8,"Red")

这是如何使用它:

mzsu5hc0

mzsu5hc04#

透视表+幂透视:

由于您使用的是实际的表,下面是一个有趣的替代方法,它使用带有以数据分析表达式(DAX)编写的Power Pivot度量值的数据透视表:

  • 选择表格中的任意单元格;
  • 在“插入”选项卡上,单击“数据透视表”并在单击“确定”之前选中“将此数据添加到数据模型”框;
  • 现在转到“Power Pivot”选项卡,选择在“计算”组中添加新度量值;
  • 给予任何合理的“度量名称”,并在公式部分用途:
=MAXX(TOPN(1,VALUES(Table1[Name]),CALCULATE(MAX(Table1[Score])),DESC),[Name])
  • 现在点击“OK”;
  • 选择您创建的数据透视表,并确保已将“组”字段选择为“行”;

现在我们有了一个计算字段,它使用我们自己的衡量标准显示每组的最佳得分者:

当新数据添加到模型(或更改)时,您需要刷新数据透视表〉〉'表设计'〉〉'全部刷新'。

公式:

如果一个公式是必须的,那么也许可以尝试:

E7中的公式:

=LET(x,UNIQUE(Table1[Group]),HSTACK(x,MAP(x,LAMBDA(x,@SORT(FILTER(Table1,Table2[Group]=x),3,-1)))))

强力查询:

第三种选择是在PowerQuery中运行快速分析:

  • 选择表中的任意单元格,然后在“数据”选项卡上,单击“获取和转换数据”组中的“来自表/区域”;
  • 选择第2列,然后在“转换”选项卡上选择“分组依据”选项;
  • 确保在“高级”选项卡中进行以下聚合:

  • 现在,在“添加列”选项卡上,选择“常规”组中的“自定义列”;
  • 为您的新列选择一个名称,我选择“最佳”并添加以下公式:
= Table.Max([Helper2], "Score")

如果操作正确,您的数据现在将如下所示:

  • 现在,在“添加列
  • 单击“展开”按钮(位于“最佳名称”的右上角),然后仅选择“名称”;
  • 删除这两个助手,您就可以关闭查询并将其加载回Excel:

为了完整起见,下面是M代码:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"Group", type text}, {"Score", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Group"}, {{"Helper1", each List.Max([Score]), type nullable number}, {"Helper2", each _, type table [Name=nullable text, Group=nullable text, Score=nullable number]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Best", each Table.Max([Helper2], "Score")),
    #"Expanded Best" = Table.ExpandRecordColumn(#"Added Custom", "Best", {"Name"}, {"Best.Name"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Best",{"Helper1", "Helper2"})
in
    #"Removed Columns"

相关问题