用于检查是否在工作时间工作的公式

问题描述 投票:0回答:2

我试图找出是否有人在“非工作时间”工作。

  • 如果周一到周五,不是在上午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
2个回答
-1
投票
=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")))

您将不得不使用嵌套的ifs。希望以上公式能起作用。


0
投票

由于您的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)>=开始,HOUR(C2)<结束然后你是“工作时间”(“否”),否则你是“超时”(“是”)

=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")

当然,我建议用一对CHOOSEs替换VLOOKUPs,并在其中列出工作日和开始/结束时间小时的隐藏工作表。 (如果老板决定改变小时数,那么更容易更新!)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.