根据关联值和决胜局值对列表进行动态排序

Dynamically sort list based off associated values with tie-breaker values

我正在尝试根据参与频率对学生进行分类。我有一个自动生成的 table 汇总了学生在过去几天参加的频率。 我想让它做两件我想不通的事情。

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

table 的简短示例:

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:$A,MATCH(ROWS($C:C1),$C:$C,0)) 

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

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

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

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

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

这将return单号根据排名

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

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

然后对 return 第一个数字进行简单的 VLOOKUP:

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