ID的最新N分(按行ID分列的AKA行数)

时间:2017-10-24 13:19:39

标签: excel excel-formula

我的数据列表是跟踪分数的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)。

我无法弄清楚如何实现这一目标。任何帮助表示赞赏。

2 个答案:

答案 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)

使用数组公式和IndexMatchLargeIf,您可以得到答案并避免数据透视表 进入单元格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我们的标准。这有两个部分。
    • 我们希望匹配两个条件,因此我们将创建两个匹配我们标准的数组,将它们相乘并计算为1
      • 我们的第一个标准是匹配ID。我们使用($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)选择最大的数字。这将选择最大的,第二大等。

将所有这些放在一起会返回我们的输出

输出:

Results