![具有日期范围 EXCEL 的多个条件的索引/匹配公式](https://linux22.com/image/1596796/%E5%85%B7%E6%9C%89%E6%97%A5%E6%9C%9F%E8%8C%83%E5%9B%B4%20EXCEL%20%E7%9A%84%E5%A4%9A%E4%B8%AA%E6%9D%A1%E4%BB%B6%E7%9A%84%E7%B4%A2%E5%BC%95%2F%E5%8C%B9%E9%85%8D%E5%85%AC%E5%BC%8F.png)
答案1
=IF(AND(F2=A2,AND(G2>=B2,G2<=C2)),D2,"")
F2=A2
检查 ID 是否匹配
G2>=B2
检查 G2 中的日期是否大于 B2*
G2<=C2
检查 H2 中的日期是否小于 C2*
D2
如果为 TRUE,则将 H2 值设置为 D2 值
""
如果为 FALSE,则将 H2 值设置为空白
""
如果不匹配,请随意更改为您想要显示的值。
更改为
=IF(AND(F2=$A$2,AND(G2>=$B$2,G2<=$C$2)),$D$2,"")
告诉单元格 G3 和 G4 与单元格 A2 至 D2 进行比较
*假设 G2 应该位于 B2 和 C2 之间,包括 @fixer1234 提到的端点。如果要排除端点,只需删除等号即可。
答案2
=IFERROR(INDEX($D:$D, AGGREGATE(15,6,row($A$2:$A$4)/(($A$2:$A$4=F2)*($B$2:$B$4<=G2)*($C$2:$C$4>=G2)),1)),"NOT FOUND")
使用 AGGREGATE 函数列出表中的所有行。将该列表除以条件。当条件为 TRUE 时,它将被除以 1,表示没有变化。当其中一个条件为 false 时,它将被除以 0,这将引发错误,AGGREGATE 中的 6 将忽略该错误。1 将从排序列表中提取第一个行号。15 按升序排序。如果您想以相反的方向对可接受的行进行排序,请使用 14。然后将行号传递给 INDEX,它返回与 D 列中相应行相对应的单元格地址。如果在范围内未找到任何内容,则返回错误。IFERROR 通过返回“NOT FOUND”来处理错误。
调整 >= 和 <= 为 > 和 < 以适合您对给定日期范围“之间”的定义。