Excel 查找记录子集的最大日期

Excel 查找记录子集的最大日期,excel,max,vlookup,Excel,Max,Vlookup,不幸的是,我必须在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月1日)之间的最新回复,我希望得到以下结果

不幸的是,我必须在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月1日)之间的最新回复,我希望得到以下结果:

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,"")
我不能简单地通过减少日期对列进行排序,因此它首先遇到的日期是最晚的,因为我还需要对另一列进行类似的排序,并且它们的顺序并不总是相同的


非常感谢您的帮助

您与此非常接近:

{=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), ...
您需要筛选出与您的条件不匹配的日期,这可以通过以下方法完成:

{=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), ...
将返回B1:B7范围中的第一项,或返回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))))}
{=MAX(如果($A$1:$A$7=“A”,
如果($B$1:$B$7=$F$10,$B$1:$B$7))}

(展开以便您可以看到IF语句的嵌套)现在将为您提供所需的结果:2013年8月1日

增加了复杂性:如果源数据中没有ID值该怎么办?e、 g.如果表格中包含一个字母d,但max对此没有任何要求,该怎么办?我尝试了这个修正案,但它只是返回#VALUE:
{=MAX(IF(F4=“Y”),IF($A$1:$A$A$7=E4,IF($B$1:$B$7=$G$10,$B$1:$B$7)),“)}
(已经有一列用“Y”表示是否有任何数据)噢,我只是把IF放错了位置,忽略我:)这是有效的:
{=IF(IF(F4=$Y),MAX(IF($A$1:$A$A$7=E4,IF($B$1:$B:$7=”),$B:$1)