不幸的是我必须在Excel中执行此操作。
我需要在两个日期的范围内找到每个ID代码的最新日期。我可以分别做每一点,但我似乎无法把它们放在一起得到我需要的东西。
对于以下示例数据:
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年8月31日至2013年9月9日之间的最新回复,我希望得到以下结果:
a 08/01/2013
b 03/12/2012
c 05/12/2012
我使用以下数组公式来获取最新日期,无论年份如何:
{=MAX(IF($A$1:$A$7="a",$B$1:$B$7))}
我使用以下公式来确定学年内的日期:
=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)),"")}
我不能简单地通过减少日期来对列进行排序,因此它首先遇到的日期是最新的,因为我还需要为另一列提供类似的东西,并且它们并不总是处于相同的顺序。
非常感谢您的帮助!
答案 0 :(得分:1)
你接近这个:
{=MAX(IF($A$1:$A$7="a",$B$1:$B$7))}
您需要过滤掉与您的条件不符的日期,这可以通过以下方式完成:
IF($B$1:$B$7<=date(2013,9,1), ...
IF($B$1:$B$7>=date(2012,8,31), ...
您无法使用AND
加入它们,因为它会将数组转换为单个值
{=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 范围内的第1项或0,具体取决于所有测试的进度。所以下一步是将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