查找logging子集的最大date

不幸的是,我不得不在Excel中这样做。

我需要在两个date范围内find每个ID代码的最近date。 我可以分开做每一个,但我似乎无法把它们放在一起,以得到我所需要的。

对于以下示例数据:

a 21/11/2012 b 17/12/2014 a 08/01/2013 b 03/12/2012 c 04/12/2012 c 05/12/2012 c 06/12/2013 

如果我正在寻找2012-13学年 – 2012年3月31日至2013年1月9date间的最新回复,我希望得到以下结果:

 a 08/01/2013 b 03/12/2012 c 05/12/2012 

我使用下面的数组公式来获取最新的date,无论年份如何:

 {=MAX(IF($A$1:$A$7="a",$B$1:$B$7))} 

我用下面的公式来获得学年内的一个date:

 =IF(COUNTIFS($B$1:$B$7,">="&$F$10,$B$1:$B$7,"<="&$G$10,$A$1:$A$7,"="&"a")>0,B1:B7,"") 

(其中F10是31/8/12,G10是1/9/13)

我试了这个…它没有工作:

 {=IF(COUNTIFS($B$1:$B$7,">="&$F$10,$B$1:$B$7,"="&$G$10,$A$1:$A$7,"="&$E1)>0,MAX(IF($A$1:$A$7=E1,$B$1:$B$7)),"")} 

我不能简单地通过减lessdate对列进行sorting,所以它遇到的第一个date是最新的,因为我也需要为另一列的类似的事情,他们并不总是在同一个顺序。

非常感谢您的帮助!

你接近这个:

 {=MAX(IF($A$1:$A$7="a",$B$1:$B$7))} 

您需要筛选出与您的条件不符的date,这可以通过以下方式来完成:

 IF($B$1:$B$7<=date(2013,9,1), ... IF($B$1:$B$7>=date(2012,8,31), ... 

您不能使用AND来join它们,因为它会将数组转换为单个值

 {=MAX(IF(AND($A$1:$A$7="a", $B$1:$B$7<=date(2013,9,1), $B$1:$B$7>=date(2012,8,31) ),$B$1:$B$7))} 

将返回B1:B7范围内的第一项,或者0,这取决于所有testing的结果。 所以下一步就是将IF的菊花链连接在一起,这就给了你这个:

 {=MAX(IF($A$1:$A$7="a", IF($B$1:$B$7<=$G$10, IF(B1:B7>=$F$10,$B$1:$B$7))))} 

(展开所以你可以看到IF语句的嵌套)现在将给你你想要的结果:8/1/2013