excel里计算时间差的,剔除非工作时间和周末,工作时间:8:30-12:00,14:30-17:30,输出用小时显示

excel里计算时间差的,剔除非工作时间和周末,工作时间:8:30-12:00,14:30-17:30,输出用小时显示,第1张

公式如下:
=24(IF(WEEKDAY(A1,2)<=5,IF(AND(MOD(A1,1)>=95/24,MOD(A1,1)<=185/24),IF(MOD(A1,1)<=05,05-MOD(A1,1)+55/24,IF(MOD(A1,1)<=13/24,55/24,185/24-MOD(A1,1))),0),0))+24(IF(WEEKDAY(B1,2)<=5,IF(MOD(B1,1)<=185/24,IF(MOD(B1,1)<=13/24,IF(MOD(B1,1)<=05,IF(MOD(B1,1)<95/24,0,MOD(B1,1)-95/24),25/24),MOD(B1,1)-13/24+25/24),8/24),0))+(NETWORKDAYS(A1,B1)-SUMPRODUCT((WEEKDAY(A1:B1,2)<=5)1))8
三段:
1、开始当天工时
2、结束当天工时
3、结束日期和开始日期之间的工作日工时

先创建一个函数计算时间差
Alter function dbofn_test(@begin datetime,@end datetime)
returns int
As
BEGIN
declare @i int,@j int
set @i=0
set @j=0
if @end<@begin
begin
declare @t datetime
set @t=@end
set @end=@begin
set @begin=@t
end
while dateadd(hh,@i,@begin) <@end
begin
if datepart(weekday,dateadd(hh,@i,@begin)) not in(1,7)
set @j=@j+1
set @i=@i+1
end
return @j
end
调用函数
select dbofn_test(@begin,@end)

假设开始时间在a列,结束时间在b列,时间差在c列,
从c2开始的公式=text(time(left(b2,2),right(b2,2),0)-time(left(a2,2),right(a2,2),0),"h:m")


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13406217.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存