2016-05-24 98 views
1
我有一个表看起来像这样

获取最后唯一的行Excel中

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

看看使用[数据透视表](http://www.contextures.com/xlPivot07.html)。它们具有类似于您在SQL中使用的分组功能。 –

回答

1

Screen shot showing function使用聚合函数

=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 

和聚集Funtion要投入G2列并向下填充。

=AGGREGATE(14, 6, 1/($A$2:$A$99=E2)*($B$2:$B$99=F2)*($C$2:$C$99), 1) 

关于语法14是大值,是例如用于首批AAA 111组合更大的是#2016年2月1日# 下一个数字6在公式是忽略错误 您可以快速获得伪 - 使用AGGREGATE function.的最后一个值。 这是一个不需要Ctrl + Shift + Enter的标准非数组公式。 AGGREGATE用引入Excel哪一列的值A与阿&乙 此被转换为逻辑值的阵列的独特组合的塔A的第一唯一值赋予真匹配的数组2010

($A$2:$A$99=E2)检查或者错误。用这些逻辑值除1得到1或DIV#错误。列F中列B值采用了类似的过程。我已将数据限制在99行。如果行数更多,则根据您的要求将99的数字更改为更高的数字。 HTH

编辑 你也可以去透视表解决方案,通过@Tim Biegeleisen在他的评论暗示。这里给出的快照说明了这种方法。

pivot table approach

id1id2被当作过滤器字段和dateUpdate最大值被选择在值字段。

+0

谢谢,它似乎对我来说是正确的。你如何得到E和F列? –

+0

我们必须在E栏和F栏中加入独特的组合。我将在我的编辑中完整地解释公式。此功能适用于Excel 2010以后的版本。 – skkakkar

+0

您也可以按照@Tim Biegeleisen在他的评论中所建议的那样使用数据透视表解决方案。这里给出的快照说明了这种方法。 – skkakkar