我的桌子看起来像这样:
id1 | id2 | dateUpdate
==========================================
aaa | 111 | 2016-01-01
aaa | 111 | 2016-01-02
aaa | 222 | 2016-01-05
aaa | 222 | 2016-01-15
bbb | 333 | 2016-01-05
bbb | 444 | 2016-01-01
ccc | 111 | 2016-01-02
我想只获得每个id1 / id2对的最新行:
id1 | id2 | dateUpdate
==========================================
aaa | 111 | 2016-01-02
aaa | 222 | 2016-01-15
bbb | 333 | 2016-01-05
bbb | 444 | 2016-01-01
ccc | 111 | 2016-01-02
感谢您的帮助!
答案 0 :(得分:1)
=AGGREGATE(14, 6, 1/($A$2:$A$99=E2)*($B$2:$B$99=F2)*($C$2:$C$99), 1)
您必须将唯一组合放在E2列和F2列中 您有五种独特的组合
COLUMN A COLUMN B
aaa 111
aaa 222
bbb 333
bbb 444
ccc 111
聚合功能将放在G2栏中并向下填充。
=AGGREGATE(14, 6, 1/($A$2:$A$99=E2)*($B$2:$B$99=F2)*($C$2:$C$99), 1)
关于语法14用于大值,例如对于#02-01-2016#的第一个aaa 111组合更大 公式中的下一个数字6用于忽略错误 您可以使用AGGREGATE function.快速获取伪Last值。 这是一个标准的非数组公式,不需要Ctrl + Shift + Enter。 AGGREGATE是在Excel 2010中引入的。
($A$2:$A$99=E2)
检查A列的哪个值与A& A的唯一组合的A列的第一个唯一值匹配。乙
这将转换为逻辑值数组,其中包含True或False数组。将这些逻辑值除1会产生1或DIV#错误。 F列中提到的B列值采用了类似的过程。我将数据限制在99行。如果它的行数更多,则根据您的要求将99的数字更改为更高的数字。
HTH
修改强> 您也可以按照@Tim Biegeleisen的评论建议使用数据透视表解决方案。这里给出的快照说明了这种方法。
id1
和id2
被视为过滤字段,并在值字段中选择dateUpdate
的最大值。