【问题标题】:Dynamically sort list based off associated values with tie-breaker values根据关联值与决胜局值动态排序列表
【发布时间】:2018-11-09 16:33:57
【问题描述】:

我正在尝试根据参与频率对学生进行分类。我有一个自动生成的表格,汇总了学生过去几天参加的频率。 我希望它做两件我无法弄清楚的事情。

  1. 我希望它忽略排名为 0 的学生,将他们从结果排名中删除。
  2. 第一个数字最重要,但我希望它引用平局结果中的下一个值。

表格的简短示例:

Andy - 1 1 2 3
Brad - 0 1 2 3
Cade - 1 2 3 4
Dane - 1 1 1 2

想要的结果:

Cade - 1
Andy - 1
Dane - 1

决胜局并不那么重要,我想我可以有条件格式来删除 0 的孩子,但我似乎仍然无法弄清楚。 我在搜索中找到的最接近的公式是:

=INDEX($A$10:$A$9,MATCH(ROWS($C$1:C1),$C$1:$C$9,0)) 

这个不起作用,因为它为几乎所有并列的学生返回#N/A。

=IFERROR(INDEX($C$1:$C$9,MATCH(SMALL(NOT($C$1:$C$9="")*IF(ISNUMBER($C$1:$C$9),COUNTIF($C$1:$C$9,"<="&$C$1:$C$9),COUNTIF($C$1:$C$9,"<="&$C$1:$C$9)+SUM(--ISNUMBER($C$1:$C$9))),ROWS($C$1:C1)+SUM(--ISBLANK($C$1:$C$9))),NOT($C$1:$C$9="")*IF(ISNUMBER($C$1:$C$9),COUNTIF($C$1:$C$9,"<="&$C$1:$C$9),COUNTIF($C$1:$C$9,"<="&$C$1:$C$9)+SUM(--ISNUMBER($C$1:$C$9))),0)),"")

我有这个可以处理平局的公式,但它需要是 OFFSET 但我不知道如何,因为它是一个数组公式。此外,使用这两个公式,它会颠倒排名,最低值位于顶部。如果有人可以帮助我,我将不胜感激。我这样做是为了给所有学生平等参与的机会。

【问题讨论】:

    标签: excel excel-formula excel-2016


    【解决方案1】:

    使用辅助列。在该列中输入以下公式:

    =IF(B1=0,"n/a",SUMPRODUCT(B1:E1/10^(COLUMN(B1:E1)-MIN(COLUMN(B1:E1)))))
    

    这将根据排名返回一个数字。

    然后在你的输出列中使用:

    =IFERROR(INDEX(A:A,MATCH(LARGE(F:F,ROW(1:1)),F:F,0)),"")
    

    然后一个简单的VLOOKUP返回第一个数字:

    =IF(I1<>"",VLOOKUP(I1,A:B,2,FALSE),"")
    

    【讨论】:

    • 我想我需要一个帮助列,但想不出它会是什么。将值转换为小数是一个非常聪明和简单的解决方案。这很棒,但是我在这部分仍然有 1 个问题。 '=IFERROR(INDEX(A:A,MATCH(LARGE(F:F,ROW(1:1)),F:F,0)),"")' 如果结果与最后的结果平局,它将多次返回相同的名称。当更改值以使 Andy 和 Dane 都具有 1.123 时,它将对 Andy 进行两次排名。 link
    • 我找到了解决问题的方法,即在出现平局时我多次返回相同的名称。我想我会分享它,以防将来有人可以使用它。我将第一个公式更改为=IF(B1=0,"n/a",SUM(-.0000000001*ROW(),SUMPRODUCT(B1:E1/10^(COLUMN(B1:E1)-MIN(COLUMN(B1:E1)))))) 这样它为结果增加了一个小值,但不足以改变排名。可能不是最优雅的解决方案,但它似乎有效。感谢 Scott Craner 让我走到这一步
    猜你喜欢
    • 2019-06-15
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 2018-10-17
    • 2017-10-15
    相关资源
    最近更新 更多