最新的N分数(通过ID的AKA行到列)
作为我的数据,我有一个跟踪时间分数的ID列表,如下所示:
ID | Score | Timestamp 1 | 50 | 09/23/17 1 | 45 | 09/30/17 1 | 43 | 10/07/17 1 | 46 | 10/14/17 2 | 35 | 09/30/17 2 | 41 | 10/07/17 2 | 40 | 10/14/17 3 | 12 | 10/07/17 3 | 18 | 10/14/17
大多数ID有几十个条目,但新的可能只有一个或两个。
我想用这个表格生成一个ID分数表,如下所示:
ID | Latest Score | 2nd Latest Score | ... 1 | 46 | 43 | 45 | 50 2 | 40 | 41 | 35 | NULL 3 | 18 | 12 | NULL | NULL
因此,ID 1最新得分的单元格会扫描ID 1的最后一行的数据或ID 1的最后一个date(它们是相同的),然后返回相应的得分(46)。
我很难找出如何实现这一目标。 任何帮助表示赞赏。
试试这个数组公式吧 (在配方栏里面点击Ctrl + Shift + Enter
):
=IFERROR(INDEX($B$2:$B$10,MATCH(LARGE(IF(($A$2:$A$10=$E2)*($C$2:$C$10),($A$2:$A$10=$E2)*($C$2:$C$10),""),COLUMN(F2)-COLUMN($E2)),($A$2:$A$10=$E2)*($C$2:$C$10),0)),"")
基本上,我用LARGE
返回最新的分数(基于时间戳,但让我知道这是错误的)和INDEX/MATCH
来查找返回的值。 试着看看这是否对你有意义,或让我知道如果我失去了什么。
使用数组公式和Index
, Match
, Large
和If
你可以得到你的答案,并避免数据透视表input到单元格E2
=IFNA(INDEX($B$2:$B$10, MATCH(1,($A$2:$A$10=$E2)*($C$2:$C$10=(LARGE(IF($A$2:$A$10=$E2,$C$2:$C$10),COLUMN()-COLUMN($E2)))),0)),"")
使用Ctrl + Shift + Enterinput
打破这个:
- 首先,我们使用
INDEX($B$2:$B$10
来指定我们想要返回的范围 - 接下来我们
MATCH
我们的标准。 这有两个部分。- 我们想要匹配两个标准,所以我们要创build两个数组来匹配我们的标准,将它们相乘并计算为1
- 我们的第一个标准是匹配ID。 我们使用
($A$2:$A$10=$E2)
- 第二个标准是获得正确的date。
($C$2:$C$10=(LARGE(IF($A$2:$A$10=$E2,$C$2:$C$10),COLUMN()-COLUMN($E2))))
使用LARGE(IF
返回的是我们感兴趣的范围内的ID,然后使用COLUMN()-COLUMN($E2)
select最大的数字,这会select最大的,第二大的
- 我们的第一个标准是匹配ID。 我们使用
- 我们想要匹配两个标准,所以我们要创build两个数组来匹配我们的标准,将它们相乘并计算为1
把这一切放在一起返回我们的输出
输出: