【问题标题】:Formula to check if working out of hours检查是否超时工作的公式
【发布时间】:2018-03-05 10:23:12
【问题描述】:

我正在尝试找出是否有人在“非工作时间”期间没有工作。

  • 如果星期一到星期五,而不是上午 8 点到晚上 9 点之间,那么答案将是“是”
  • 如果是星期六,而不是上午 8 点到下午 5 点之间,答案是 会是“是”

  • 如果是星期天,而不是上午 9 点到下午 5 点之间,答案是 将是“是”。

否则答案将是“否”。

有 4 列:1. 人名 (A) 2. 日期 (B) 3. 时间 (C) 4. 非工作时间 (D)

我复制了下面的公式,该公式在周一至周五都能正常工作,但我在周末的第二部分苦苦挣扎。

=IF(OR(WEEKDAY(B2)=1,WEEKDAY(B2)=7),"Yes",IF(AND(C2>=8/24,C2<21/24),"No","Yes"))

如果有人可以建议如何更改公式以使用周六和周日的“非工作时间”?

不胜感激。

【问题讨论】:

    标签: excel excel-formula excel-2016


    【解决方案1】:

    由于您的WEEKDAY(B2) 将从 1(星期日)到 7(星期六),您可以使用 CHOOSE 选择“工作时间”期间的开始/结束时间:

    开始:=Choose(Weekday(B2),9,8,8,8,8,8,8)

    结束:=Choose(Weekday(B2),17,21,21,21,21,21,17)

    所以,如果HOUR(C2)&gt;= 开始,而HOUR(C2)&lt; 结束 那么你是“工作时间”(“否” ),否则你就是“下班时间”(“是”)

    =IF(AND(HOUR(C2)>=CHOOSE(WEEKDAY(B2),9,8,8,8,8,8,8), HOUR(C2)<CHOOSE(WEEKDAY(B2),17,21,21,21,21,21,17)),"No","Yes")
    

    当然,我会推荐用一对VLOOKUPs 替换CHOOSEs,并在其中列出工作日和开始/结束时间的隐藏表小时。 (如果 The Boss 决定更改营业时间,更新会容易得多!)

    【讨论】:

    • Chronocidal,我同意,根据过去的经验,在创建依赖于时间和设置值等数据的复杂工作表和公式时,偶尔会发生这些变化,然后必须手动更新每个公式。在隐藏工作表中使用值意味着可以随时更改它们而无需修改整个工作簿。也非常适合在不同情况下测试公式,
    • 当然,如果它们发生变化,那么您通常不希望追溯更改的日期。您可能应该将您的工作日放在顶部(B-H 列),并将每次更改与开始日期放在一个新行中,以便您可以使用范围查找:VLOOKUP($B2, 'Work Hours Control'!$A:$H,1+Weekday($B2), TRUE)
    • 很好,我倾向于使用当前/实时数据,而不是过去的数据,需要考虑一些事情。
    【解决方案2】:
    =IF(WEEKDAY(B2)=7,IF(OR(C2<TIMEVALUE("8:00"),C2>TIMEVALUE("17:00"))=TRUE,"Yes","No"),IF(WEEKDAY(B2)=1,IF(OR(C2<TIMEVALUE("9:00"),C2>TIMEVALUE("17:00"))=TRUE,"Yes","No"),IF(WEEKDAY(B2)<>1,IF(OR(C2<TIMEVALUE("8:00"),C2>TIMEVALUE("21:00"))=TRUE,"Yes","No"),"No")))
    

    您将不得不使用嵌套的 if。希望上面的公式能奏效。

    【讨论】:

      猜你喜欢
      • 2013-11-09
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2020-11-05
      相关资源
      最近更新 更多