【问题标题】:Get top 10 list with duplicates获取包含重复项的前 10 名列表
【发布时间】:2020-02-08 03:57:49
【问题描述】:

我正在尝试在 Excel 中获得前 10 名列表。我对副本有点困难。如何让它显示每个等级级别的重复名称?

我在排名列 (E) 中的公式是:

=IF(ISBLANK(C4)," ",IF(MATCH(C4,C:C,0)=ROW(),COUNTIF(C:C,C4),"Already Counted"))

我在订单栏 (I) 中的公式是:

=LARGE($E$3:$E$3999,G3)

我在名称列 (H) 中的公式是:

=INDEX($C$3:$C$3999,MATCH(I3,$E$3:$E$3999,0))

如何获取名称列表以显示重复项?例如,订单 2 应该有 14 步和 Dan Galvin; not 14 Moves 显示两次。任何帮助将不胜感激。

【问题讨论】:

标签: excel excel-formula


【解决方案1】:

您是否尝试过使用动态表?我用一个来得到这个输出,看看它是不是你要找的:

如果没有,你能把样本数据和预期的结果放在这里吗,tks。

【讨论】:

  • 我没试过。有没有办法将表中的结果限制为仅 10 个?
  • 您可以使用第一列中的过滤器选项来获得前 10 名,但它不会考虑重复值,当然您可以将数据透视表放在另一张工作表上或源数据下方,然后在它附近添加一个带有索引的列,然后对该索引应用过滤器以显示前十个,它也会影响数据透视表上的行,你会得到你的 10 个值或任何你需要的值,我知道当然必须有另一个更清洁的解决方案(和优雅的),但你可以只使用它来实现你所需要的。 :)
【解决方案2】:

如果您有 Office 365,SORT() 和 FILTER() 函数将解决您的问题:

将排名列放在名称列(现在为 D)旁边,并将重复项计为 0:

=IF(ISBLANK(C4), "", IF(MATCH(C4, C:C, 0) = ROW(), COUNTIF($C$3:$C$3999, C4), 0))

在名称列(H)的第一行输入以下公式:

=SORT(FILTER($C$3:$D$3999, $D$3:$D$3999 >= LARGE($D$3:$D$3999, 10)), 2, -1)

即只取数量等于或大于排名第 10 位的人的姓名,并按数量降序排列。

PS:这些是动态数组公式,它们“溢出”到相邻的单元格。

【讨论】:

    【解决方案3】:

    使用Power Query

    • 按等级对行进行降序排序
    • 删除重复项(选择 Agent 列)
    • 返回结果表的前 10 行

    最后几行 MCode 需要手动插入到高级编辑器中。第一行可以从 UI 中完成。

    如果您不想进入高级编辑器,在您对重复项进行排序和删除后,您可以添加一个索引列,然后根据值进行过滤。


    
        let
            Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
            #"Changed Type" = Table.TransformColumnTypes(Source,{{"Agent", type text}, {"Rank", type any}}),
            #"Sorted Rows" = Table.Sort(#"Changed Type",{{"Rank", Order.Descending}}),
            #"Removed Duplicates" = Table.Distinct(#"Sorted Rows", {"Agent"}),
            Top10 = Table.FirstN(#"Removed Duplicates",10)
        in
            Top10
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多