Excel 按ID列出的最新N分(也就是按ID列出的行到列)
我有一个ID列表作为我的数据,这些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 | 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))
只返回我们感兴趣的范围内的ID)。然后使用LARGE(如果
这将选择最大的、第二大的等COLUMN()-COLUMN($E2)选择最大的数字
- 我们的第一个标准是匹配ID。我们使用
- 我们想要匹配两个条件,所以我们将创建两个数组来匹配我们的条件,将它们相乘,并计算为1
使用数据透视表也可以达到同样的效果。@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)),"")