最新的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来查找返回的值。 试着看看这是否对你有意义,或让我知道如果我失去了什么。

使用数组公式和IndexMatchLargeIf你可以得到你的答案,并避免数据透视表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最大的,第二大的

把这一切放在一起返回我们的输出

输出:

结果