excel只计算工作时间,不计算非工作时间的函数该怎么写?

一个项目,比如开始时间A1是2012-4-28 8:00:00 结束时间B1是2012-5-3 17:30:00
然后周末以及节假日是休息时间,每天的工作时间为8:45-11:45 13:30-17:30,那么以上这个时间段实际工作时间应该是21个小时,因为如果是非工作时间开始的话,是不算工作时长的。

那么这个用公式写的话该怎么写呢?
各位大大帮帮忙吧,等着交差,完不成了。。。。

C2=IF(HOUR(A2)+MINUTE(A2)/60<8.75,8.75,IF((HOUR(A2)+MINUTE(A2)/60>=8.75)*AND(HOUR(A2)+MINUTE(A2)/60<=11.75),HOUR(A2)+MINUTE(A2)/60,IF((HOUR(A2)+MINUTE(A2)/60>11.75)*AND(HOUR(A2)+MINUTE(A2)/60<=13.5),13.5,IF((HOUR(A2)+MINUTE(A2)/60>13.5)*AND(HOUR(A2)+MINUTE(A2)/60<=17.5),HOUR(A2)+MINUTE(A2)/60,17.5))))

D2=IF(HOUR(B2)+MINUTE(B2)/60>=17.5,17.5,IF((HOUR(B2)+MINUTE(B2)/60>=8.75)*AND(HOUR(B2)+MINUTE(B2)/60<=11.75),HOUR(B2)+MINUTE(B2)/60,IF((HOUR(B2)+MINUTE(B2)/60>11.75)*AND(HOUR(B2)+MINUTE(B2)/60<=13.5),11.75,IF((HOUR(B2)+MINUTE(B2)/60>13.5)*AND(HOUR(B2)+MINUTE(B2)/60<=17.5),HOUR(B2)+MINUTE(B2)/60,8.75))))

E2=NETWORKDAYS(A2,B2)-1

F2=IF(C2<=D2,IF((C2<=11.75)*AND(D2>13.5),E2*8+D2-C2-1.5,E2*8+D2-C2),IF(C2<=11.75,(E2-1)*8+D2-8.75+11.75-C2,IF(D2>=13.5,(E2-1)*8+D2-13.5+17.5-C2+3,(E2-1)*8+D2-8.75+17.5-C2)))

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-07
C1输入
=TEXT((B1-A1-INT(B1-A1)*17/24-MAX(35/96-MOD(A1,1),0)-MAX(MOD(B1,1)-35/48,0)-MAX(MIN(7/96,9/16-MOD(A1,1),MOD(B1,1)-47/96,MOD(B1,1)-MOD(A1,1)),0)-IF(MOD(B1,1)<MOD(A1,1),MIN(13/48,1-MOD(A1,1))+MIN(47/96,MOD(B1,1))+MIN(7/96,MAX(9/16-MOD(A1,1),0)+MIN(MAX(MOD(B1,1)-1/2,0),7/96)),0)-SUMPRODUCT(N(MOD(ROW(INDIRECT(INT(A1)&":"&INT(B1))),7)<2))*7/24)*24,"0.0")&"小时"
回车(可向下填充)。
【公式只剔除双休日。而对于节日的,没有现成的函数可用,虽可用IF函数逐个判断设置,但公式太累赘了,看有没有高手帮忙美化】
分数解释:
时间 换成分数
上午工作 8:45 35/96
11:45 47/96
午休 1:45 7/96
下午工作 13:30 9/16
17:30 35/48
一天工作 7:00 7/24
一天休息 17:00 17/24
第2个回答  2012-06-04
首先 把你的 excel 加载宏 分析数据库……vba函数 加载……
然后就可以使用 Networkdays 来统计 实际工作天数了……然后再乘以 你的每天工时数(固定每天标准工时7小时)就可以得到你的工时数了……详细的看这个函数的帮助吧……

首要的是要 加载宏 分析数据库---VBA函数……一定要加载 否则 没有这个函数……
第3个回答  2012-06-04

看看吧,【编辑栏】的公式

追问

这个只是当天的工作时间计算,如果隔日甚至跨周末以及节假日的话无法计算。

追答

工时统计肯定是一天天统计吗
最后在做一个汇总。

追问

不是,我可能会有很多行时间,比如1000行数据,里面每一个都有开始时间和结束时间,如果每个都一天天统计的话会相当麻烦。

追答

临时工工时:每人每天的可能都不同,要一天天算,一般没有其他方法。
合同工:大部分都是一样的,就每天的乘以工作天数
要是有请假或加班,就分别另算,最后再做汇总。

第4个回答  2012-06-07
临时工工时:每人每天的可能都不同,要一天天算,一般没有其他方法。
合同工:大部分都是一样的,就每天的乘以工作天数
要是有请假或加班,就分别另算,最后再做汇总。