首页 > 解决方案 > 根据关联值与决胜局值动态排序列表

问题描述

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

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

标签: excelexcel-formulaexcel-2016

解决方案


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

=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),"")

![![在此处输入图像描述


推荐阅读