我的数据列表是跟踪分数的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分数表,如下所示:
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的最新日期(它们是相同的),然后返回相应的得分(46)。
我无法弄清楚如何实现这一目标。任何帮助表示赞赏。
答案 0 :(得分:3)
试试这个数组公式(在公式栏中单击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
来查找要返回的值。试着看看这对你是否有意义,或者让我知道我是否遗漏了任何东西。
答案 1 :(得分:2)
使用数组公式和Index
,Match
,Large
和If
,您可以得到答案并避免数据透视表
进入单元格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 + 输入
要解决这个问题:
INDEX
我们想要使用INDEX($B$2:$B$10
MATCH
我们的标准。这有两个部分。
($A$2:$A$10=$E2)
($C$2:$C$10=(LARGE(IF($A$2:$A$10=$E2,$C$2:$C$10),COLUMN()-COLUMN($E2))))
我们通过使用LARGE(IF
仅返回我们感兴趣的ID范围来完成此操作。然后使用COLUMN()-COLUMN($E2)
选择最大的数字。这将选择最大的,第二大等。将所有这些放在一起会返回我们的输出