【问题标题】:Formula to build report of employees that are not working between 2 dates建立两个日期之间不工作的员工报告的公式
【发布时间】:2021-11-12 01:16:05
【问题描述】:

我正在尝试找到一种方法来查看哪些员工在两个日期之间没有工作。

我应该使用 vlookup、索引和匹配、过滤器、查询还是其他方式?

  • 表 1 包含员工详细信息和开始/结束日期。
  • 工作表 2 接受用户输入以选择 2 个日期,它会自动显示未工作的可用员工列表。

表 1 - 所有员工和工作天数的数据库/日志。

# A B C D
1 ID Name Start Date End Date
2 12345 John 01/01/2021 01/08/2021
3 54321 Sarah 01/24/2021 01/29/2021
4 00731 James 02/05/2021 02/15/2021
5 00731 John 02/10/2021 02/30/2021

表 2(第 1-2 行)- 手动输入两个日期。

# A B
1 Start Date (Manual input) End Date (Manual input)
2 01/01/2021 01/30/2021

表 2(第 3 行+)- 在表 2 中输入的两个日期之间未工作的所有员工的列表!A2:B2(预期结果)

# A B
3 ID Name
4 00731 James

【问题讨论】:

    标签: google-sheets google-sheets-formula index-match


    【解决方案1】:

    尝试:

    =INDEX(SUBSTITUTE(UNIQUE(QUERY(""&SPLIT(FLATTEN(IF(SEQUENCE(1, MAX(D2:D-C2:C))<=D2:D-C2:C, 
     "♥"&A2:A&"♦"&B2:B&"♦"&C2:C+SEQUENCE(1, MAX(D2:D-C2:C), 0), )), "♦"), 
     "select Col1,Col2 where not Col3 matches '"&JOIN("|", "^$", 
     IF(SEQUENCE(1, G2-F2)<=G2-F2, F2+SEQUENCE(1, G2-F2, 0), ))&"'", 0)), "♥", ))
    

    demo sheet

    【讨论】:

      【解决方案2】:

      假设您的第一个完整数据表的名称实际上是Sheet1,请将以下内容放在 Sheet2 单元格 A4 中:

      =FILTER(Sheet1!A2:B,Sheet1!A2:A&lt;&gt;"",(Sheet1!C2:C&gt;G2)+(Sheet1!D2:D&lt;F2))

      FILTER 中的组合条件 (Sheet1!C2:C&gt;G2)+(Sheet1!D2:D&lt;F2) 表示“开始日期在给定的范围日期之后,或者结束日期在给定的范围日期之前。”

      Sheet1!A2:A&lt;&gt;"" 的另一个条件只是排除了原始数据集中的空白行。就视觉结果而言,这不是绝对必要的;但它会阻止将空行添加到这些结果中,这将允许您根据需要在 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&gt;=F2)*(C2:C&lt;=G2))+((D2:D&gt;=F2)*(D2:D&lt;=G2))),1,FALSE))))

      这里,内部FILTER 首先形成一个列表,其中包含 在该范围内工作的所有人员,然后外部FILTER 过滤到UNIQUE 集合中的人员不在该内部列表中(即,尝试 VLOOKUP 他们返回 IS(an)ERROR)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-02
        • 2020-11-20
        • 2010-09-20
        • 2023-03-09
        • 2015-07-21
        • 1970-01-01
        相关资源
        最近更新 更多