索引匹配与不同日期和值之间的搜索
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
将错误!)
我正在尝试根据 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
将错误!)