索引匹配与不同日期和值之间的搜索

Index Match with searches between different dates and values

我正在尝试根据 2 组条件完成查找。从附件中,我需要 return E 列中的费用,其中搜索日期介于起始日期和截止日期之间(列 A 和 B),并且 属性 值介于下限和上限之间(列 C&D)。我附上了一些屏幕截图以帮助更清楚地说明这一点。

我的公式在单元格 K3 中(结果 table):{=INDEX($E:$E,MATCH(1,($A:$A>=H3)*($B:$B<=H3)*($C:$C>=I3)*($D:$D<=I3)),0)}

但目前,这个公式 return 是 table 的底部数字(137.17 英镑)....而它应该 return 95 英镑 - 我是不确定为什么要这样做。

原始数据

结果table

希望这是有道理的,并且有人愿意提供帮助。 谢谢,保罗

让我们分解一下您 MATCH

的条件
($A:$A>=H3) * ($B:$B<=H3) * ($C:$C>=I3) * ($D:$D<=I3)

第一个条件:开始日期在目标日期当天或之后

第二个条件:结束日期等于或早于目标日期

第三个条件:最小值小于或等于目标值

第四个条件:最大值大于等于目标值。

我们可以将其简化为 2 个限制:

Start_Date ≥ Target_Date ≥ End_Date
Min_Value ≥ Target_Value ≥ Max_Value

可能可以看到这里的问题,但让我们插入一些数字。首先,结果 table 中的目标值:

Start_Date ≥ {2018-06-18} ≥ End_Date
Min_Value ≥ 80000 ≥ Max_Value

现在,原始数据第 3 行的数字:

{2018-05-21} ≥ {2018-06-18} ≥ {2020-06-02}
50001 ≥ 80000 ≥ 100000

希望您现在注意到您混淆了 >=<=!没有既在 2020 年 6 月之后 又在 2018 年 5 月之前 的日期,也没有小于 50,000 大于 100,000 的数字.

如果我们交换这些,你会得到这个:

=INDEX($E:$E,MATCH(1,($A:$A<=H3)*($B:$B>=H3)*($C:$C<=I3)*($D:$D>=I3)),0)

当然这样还是不行,因为你的INDEX MATCH写错了。你有这个:

=INDEX(Range, MATCH(1, Condition), 0)

但是你应该有这个:

=INDEX(Range, Match(1, Condition, 0))

像这样:

=INDEX($E:$E, MATCH(1, ($A:$A<=H3)*($B:$B>=H3)*($C:$C<=I3)*($D:$D>=I3), 0))

理想情况下,我会建议将 50001 之类的东西更改为 50000,并且只使用 < 而不是 <=(否则,50000.5 将错误!)