Excel:在列中查找值,然后在该行中搜索日期值,将值返回到左侧

时间:2018-06-24 22:24:33

标签: excel excel-formula excel-2010

我正在寻找一个公式(或代码),该公式在列中查找值,然后在日期之间的该行中查找值,当多个日期返回最大值时,然后将值返回到左侧。我不能使用帮助器列。我尝试了几个嵌套的索引/匹配公式,但是没有成功...

对于以下示例:

参数1:在A列中找到叉子

参数2:在该行(4)中,找到介于18年1月1日至18年1月5日之间的日期

参数3:当在该日期范围内找到多个日期时,返回最大值

参数4:从该日期左侧的列返回值

结果:D列为黑色

    A       B       C           D       E           F             G
1   ID      Colour 1Date 1      Colour 2Date 2      Colour 3      Date 3
2   Plate   Green   1-Jan-18    Red     23-Jan-18   L blue        14-Feb-18
3   Bowl    Blue    6-Jan-18    Brown   28-Jan-18   Yellow/Green  19-Feb-18
4   Fork    Yellow  2-Jan-18    Black   4-Jan-18    Turquoise     24-Feb-18
5   Knive   Purple  16-Jan-18   White   7-Feb-18    Maroon        1-Mar-18
6   Spoon   Pink    21-Jan-18   Orange  12-Feb-18   L pink        6-Mar-18

我希望有可能!非常感谢。

1 个答案:

答案 0 :(得分:1)

尝试一下

其中
I10 =要搜索的ID
I11 =最小日期(2018年1月1日)
I12 =最长日期(2018年1月5日)

J10 = =MATCH($I$10,$A$1:$A$6,0)获取ID的行号

=INDEX(INDEX($A$1:$G$6,$J$10,),
       MATCH(
             MAXIFS(INDEX($A$1:$G$6,$J$10,),
                    INDEX($A$1:$G$6,$J$10,),">="&$I$11,
                    INDEX($A$1:$G$6,$J$10,),"<="&$I$12
                   ),
             INDEX($A$1:$G$6,$J$10,),0
             ) - 1
      )


INDEX($A$1:$G$6,$J$10,)获取ID的数据行(在公式中重复多次)
MAXIFS(...)获得满足>=<=标准的最长日期
MATCH(MAXIF(...), [ID data row],0)获取MAXIF返回的日期的列号
INDEX( [ID data row], MATCH(MAXIF(...), [ID data row],0) - 1)返回颜色


不包含MAXIFS的替代公式

=INDEX(INDEX($A$1:$G$6,$J$10,),
            MATCH(
                  MAX(IFERROR(({0,0,1,0,1,0,1})*(INDEX($A$1:$G$6,$J$10,)>=$I$11)*(INDEX($A$1:$G$6,$J$10,)<=$I$12)*(INDEX($A$1:$G$6,$J$10,)),0)),
            INDEX($A$1:$G$6,$J$10,),0
            ) - 1
      )

输入为数组公式(用 Ctrl Shift Enter 完整,而不仅仅是 Enter