假设您的第一张带有完整数据的工作表的名称实际上是Sheet1
,请将以下内容放在 Sheet2 单元格 A4 中:
=FILTER(Sheet1!A2:B,Sheet1!A2:A<>"",(Sheet1!C2:C>G2)+(Sheet1!D2:D<F2))
(Sheet1!C2:C>G2)+(Sheet1!D2:D<F2)
组合中的非此即彼条件FILTER
意味着“开始日期在给定的范围日期之后,或者结束日期在给定的范围日期之前”。
另一个条件是Sheet1!A2:A<>""
排除原始数据集中的空白行。就视觉结果而言,这不是绝对必要的;但它会阻止将空行添加到这些结果中,这将允许您根据需要在 Sheet2 的 Col A 和 B 中的结果下方输入数据,或者在 Sheet2 中的行数少于 Sheet1 中的行数而无需公式添加更多行容纳空返回。
您发布的示例数据不清楚。同一个 ID 有两个不同的名称(即 00731)。并且您在 2021 年 2 月 30 日的 D5 中有一个“结束日期”,这不是有效日期。无论如何,尚不清楚同一个人/ID 是否会在原始数据集中出现两次。我上面的公式假设你不会。
如果您的原始数据列表实际上可能包含重复项,事情就会变得有点棘手。在这种情况下,请在 Sheet2 单元格 A4 中改用以下公式:
=UNIQUE(FILTER(A2:B,ISERROR(VLOOKUP(A2:A,FILTER(A2:A,((C2:C>=F2)*(C2:C<=G2))+((D2:D>=F2)*(D2:D<=G2))),1,FALSE))))
在这里,内部首先形成在该范围内FILTER
工作的所有人员的列表,然后外部过滤器在一组不在该内部列表中的人员中(即,尝试返回(an) )。FILTER
UNIQUE
VLOOKUP
IS
ERROR