EXCEL:确定Excel中日期是“营业时间”还是“营业时间”还是“周末”的公式

时间:2019-06-23 08:57:45

标签: excel excel-formula

尝试为SLA报告创建公式,以显示代理是否在SLA中确认了分配。

我在其他帖子之一中发现了一个公式,以显示办公时间来自

LOAD CSV WITH HEADERS FROM "file:///test.csv" AS row
MATCH (f:AGENTID), (s:CUSTOMERID)
WHERE f.name = row.AGENTID
AND s.name = row.CUSTOMERID
CALL apoc.create.relationship(f, row.RELATIONSHIP,{}, s) YIELD rel
RETURN rel
  

我想排除晚上,周末和节假日。

它可以说“下班后”还是“周末”或“假期”而不是使用Mon-Fri ONLY from 8-5:30pm IN

如何修改公式才能起作用?我也尝试过其他格式,但这只是一本小说的篇幅,没有用。

OUT

[7,14,20]节已替换为17:30(下午5:30)

=IF(AND(WEEKDAY(A2)>1,MOD(A2,1)*24>=8,MOD(A2,1)*24<=IF(WEEKDAY(A2)=7,14,20)
),"In","Out")

1 个答案:

答案 0 :(得分:1)

我建议您首先将数据和条件放入表中,这将使组织,引用和更新更加容易。要快速执行此操作,请突出显示您的范围,然后按Ctrl +T。这将为表设计打开一个新的功能区选项卡,您可以为表命名。我更喜欢以t_开头所有表名。在下面的示例中,有三个表:

1)t_BusinessHours 2)t_Holidays 3)t_Data_AcknowledgmentTimes

enter image description here

enter image description here

要获得所需的结果,您将需要几个嵌套公式。我将它们分解,以便您可以看到每个部分的功能。然后将它们合并为一个结果列。如您所见,当数据位于表中时,您可以使用表名和列标题而不是列字母/行号轻松引用所需的部分。

enter image description here

开放时间过后?

=IF(TIME(HOUR(A2),MINUTE(A2),0)>=MIN(t_BusinessHours[Time]),"After Open","Before Open")

在关闭时间之前?

=IF(TIME(HOUR(A2),MINUTE(A2),0)<MAX(t_BusinessHours[Time]),"Before Close","After Close")

周末?

=IF(ISNUMBER(WEEKDAY(A2,2))>5,"Weekend","Weekday")

假期?

=IF(COUNTIF(t_Holidays,EDATE(A2,0))>0,"Holiday","Not Holiday")

将其放在一起(例如,不要使用此-请使用下面的一个)

=IF(COUNTIF(t_Holidays,EDATE(A2,0))>0,"Holiday",
IF(ISNUMBER(WEEKDAY(A2,2))>5,"Weekend",
IF(AND(TIME(HOUR(A2),MINUTE(A2),0)<MIN(t_BusinessHours[Time]),
TIME(HOUR(A2),MINUTE(A2),0)>=MAX(t_BusinessHours[Time])),
"After Hours","During Business Hours")))

结果(以上公式中的A2替换为表引用)

=IF(COUNTIF(t_Holidays,EDATE([@[Start Time]],0))>0,"Holiday",
IF(ISNUMBER(WEEKDAY([@[Start Time]],2))>5,"Weekend",
IF(AND(TIME(HOUR([@[Start Time]]),MINUTE([@[Start Time]]),0)<MIN(t_BusinessHours[Time]),
TIME(HOUR([@[Start Time]]),MINUTE([@[Start Time]]),0)>=MAX(t_BusinessHours[Time])),"After Hours","During Business Hours")))