Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel中计算两个日期之间的工作日小时数_Excel_Datetime_Excel Formula_Formula - Fatal编程技术网

在Excel中计算两个日期之间的工作日小时数

在Excel中计算两个日期之间的工作日小时数,excel,datetime,excel-formula,formula,Excel,Datetime,Excel Formula,Formula,我正试图确定这段时间有多少时间 在一个工作日的两个时间点之间 (由Excel的NETWORKDAYS函数确定) 例如,周二至11日之间的“工作日时间” 颗粒物 下周三2 上午是3小时 星期五也一样 下午二时至星期一二 是的 如果开始时间是星期五8点 颗粒物 结束时间是周六或周日的任何时间, 答案应该是4小时- 在周末休息的部分 (或假日)应该被忽略 (或从端到端持续时间中减去) 这个问题的底部说明了更多的例子 我在这里发现了很多东西,但它们处理SQL、代码等,而不是Excel中的一吨。我确实找到

我正试图确定这段时间有多少时间 在一个工作日的两个时间点之间 (由Excel的
NETWORKDAYS
函数确定) 例如,周二至11日之间的“工作日时间” 颗粒物 下周三2 上午是3小时 星期五也一样 下午二时至星期一二 是的 如果开始时间是星期五8点 颗粒物 结束时间是周六或周日的任何时间, 答案应该是4小时- 在周末休息的部分 (或假日)应该被忽略 (或从端到端持续时间中减去)

这个问题的底部说明了更多的例子

我在这里发现了很多东西,但它们处理SQL、代码等,而不是Excel中的一吨。我确实找到了,但它并没有直接帮助我

我将其用于公式:

=NETWORKDAYS(F2,G2,Q$2:Q$7)-1-MOD(F2,1)+MOD(G2,1) 
下面是正在发生的事情


我在这里遗漏了什么?

首先,您遗漏了一个明确的问题陈述 “工作日小时数”是多少 星期五中午到星期六中午之间

好吧,我想你是在说明你到底想要什么

少一点咆哮,你错过了什么 (你似乎没有注意到的) 在所有你说结果是错误的例子中 (仅在这些情况下), 开始日期/时间(
Fn
) 或您的结束日期/时间(
Gn
) 星期六还是星期天 (尝试使用格式
ddd mm dd yyyy h:mm:ss
而不是
mm dd yyyy h:mm:ss
) 
网络日(星期三、星期五)
3
但是
网络日(周三、周六)
网络日(周三、周日)
也是
3

举你的第一个例子:Tue07-03-2018 15:44:16 通过《太阳报》07-08-2018 20:09:56
网络日(周二、周日)
通常为
4
(星期二、星期三、星期四和星期五;忽略周末), 但是
NETWORKDAYS(07-03周二,07-08周日)
3
因为07-04的假期 所以你的公式是3-1-(15:44:16)+(20:09:56), 或2+(20:09:56-15:44:16),或2天和4:25:40, 等于52:25:40,这就是Excel给你的 你没有考虑到
将为您提供所需的结果。

您需要考虑间隔的开始和结束日期可能在周末(或假日)。在这种情况下,不应使用
MOD
术语。试试这个:

your_formula(Tue 07-03-2018 15:44:16, Fri 07-06-2018 20:09:56)
=(网络日(F2,G2,$Q$2:$Q$6)-如果(和)(工作日(F2,2)您的公式高度依赖于控制输入数据。当前,您的公式仅在日期范围内的第一天和最后一天是工作日时才有效。这是由于
MOD(F2,1)+MOD(G2,1)
这将取你范围内第一天和最后一天的剩余部分。如果它们恰好是非工作日,那么你的公式将是错误的

将您的公式与数据库中的信息相结合,您可以使公式根据您所拥有的做您想要做的事情

在这里:

=网络日(如果(工作日)(F2)
your_formula(Tue 07-03-2018 15:44:16, Fri 07-06-2018 20:09:56)
=NETWORKDAYS(F2,G2,Q$2:Q$7)-NETWORKDAYS(G2,G2,Q$2:Q$7)-NETWORKDAYS(F2,F2,Q$2:Q$7)*MOD(F2,1)+NETWORKDAYS(G2,G2,Q$2:Q$7)*MOD(G2,1)
=(NETWORKDAYS(F2,G2,$Q$2:$Q$6)-IF(AND(WEEKDAY(F2,2)<6,ISNA(MATCH(INT(F2),$Q$2:$Q$6,0))),MOD(F2,1),0)+IF(AND(WEEKDAY(G2,2)<6,ISNA(MATCH(INT(G2),$Q$2:$Q$6,0))),MOD(G2,1)-1,0))
=NETWORKDAYS(IF(WEEKDAY(F2)<5,F2,WORKDAY(F2,1,holidays)),IF(WEEKDAY(G2)<5,G2,WORKDAY(G2,-1,holidays)),holidays)-IF(WEEKDAY(F2,2)<6,MOD(F2,1),1)+IF(WEEKDAY(G2,2)<6,MOD(G2,1),0)