Excel 按ID列出的最新N分(也就是按ID列出的行到列)

Excel 按ID列出的最新N分(也就是按ID列出的行到列),excel,excel-formula,Excel,Excel Formula,我有一个ID列表作为我的数据,这些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

我有一个ID列表作为我的数据,这些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)

我很难想出如何做到这一点。非常感谢您的帮助。

尝试此数组公式(在公式栏内同时单击
Ctrl+Shift+Enter
):


基本上,我使用
LARGE
返回最新的分数(基于时间戳,但如果这是错误的,请告诉我),并使用
索引/匹配
查找要返回的值。试试看这对您是否有意义,或者如果我遗漏了什么,请告诉我。

使用数组公式和
索引
匹配
大的
如果
您可以得到答案并避免使用透视表 已输入单元格
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+Enter输入

要分解这一点:

  • 首先,我们使用
    索引($B$2:$B$10
  • 接下来我们将
    匹配我们的标准。
    
    • 我们想要匹配两个条件,所以我们将创建两个数组来匹配我们的条件,将它们相乘,并计算为1
      • 我们的第一个标准是匹配ID。我们使用
        ($A$2:$A$10=$E2)
      • 第二个标准是获得正确的日期。
        ($C$2:$C$10=(大的(如果($A$2:$A$10=$E2,$C$2:$C$10),COLUMN()-COLUMN($E2))
        我们使用
        LARGE(如果
        只返回我们感兴趣的范围内的ID)。然后使用
        COLUMN()-COLUMN($E2)选择最大的数字
        这将选择最大的、第二大的等
把这些放在一起可以返回我们的输出

输出:

使用数据透视表也可以达到同样的效果。@AnkitBajpai数据透视对于快速解决方案很好,但最好在你能击败我的时候避免它!很好的解决方案。
=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)),"")