具有日期范围 EXCEL 的多个条件的索引/匹配公式

具有日期范围 EXCEL 的多个条件的索引/匹配公式

我正在尝试编写一个公式,帮助将数据从 D 列拉到 H 列(当前已填充但为空白)。

逻辑如下:如果 A 列中的任意一个 ID 在 F 列的范围内,并且 G2 在 B2 和 C2 的日期范围内,那么就把 D 列的数据给我放到 H 中。

如果 ID 匹配,并且相关日期介于匹配 ID 的日期范围之间或等于该日期范围,则提取 D 列中的相应数据。

ID、日期范围和示例数据的 Excel 屏幕截图

答案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”来处理错误。

调整 >= 和 <= 为 > 和 < 以适合您对给定日期范围“之间”的定义。

相关内容