答案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”来处理错误。
调整 >= 和 <= 为 > 和 < 以适合您对给定日期范围“之间”的定义。