Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4066|回复: 27

[已解决]如何计算两个日期之间的时间差并减去休息的时间~~

[复制链接]
发表于 2021-9-6 12:59 | 显示全部楼层 |阅读模式
就是想计算两个日期之间的时间差(小时差),如果是同一天,就看是不是一个上午一个在下午,如果是的话,要减去中午的1点和两点。不是同一天的话就要减去18点到第二天9点。求助,我自己写的公式总是不能减去休息时间。
最佳答案
2021-9-10 11:08
接單日期:2020-06-02 09:02:14 交接日期:2020-06-02 14:29:02
工時計算為 4:26:48,以取分鐘計時,不進位 266分鐘,進位 267分鐘
問題是進位是如何考慮的,無條件進或捨或以30秒上進或下捨

下L式偶而會增減1分鐘誤差,判斷是小數浮點誤差結果
L =SUM(FREQUENCY(MOD(ROW(INDIRECT("1:"&TEXT(B2-A2,"[m]")))/1440+A2,1),{9,13,14,18}/24)*{0;1;0;1;0})

下M式將 "日分割" 改為 "分鐘分割",以整數分割避免浮點誤差
M =SUM(FREQUENCY(MOD(ROW(INDIRECT("1:"&TEXT(B2-A2,"[m]")))+A2*1440,1440),{9,13,14,18}*60)*{0;1;0;1;0})

上M式計算時將秒捨去不計,可以加下式以30秒上進或下捨
ROUND(TEXT(B2-A2,"s")/60,0)

日期差.rar

57.87 KB, 下载次数: 18

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2021-9-6 15:32 | 显示全部楼层
回复

使用道具 举报

发表于 2021-9-6 15:44 | 显示全部楼层
=TEXT(MAX(MIN(INT(A2)+13/24,1*B2)-A2,)+MAX(B2-INT(A2)-14/24,)-MAX(MIN(1*B2,INT(A2)+1.375)-INT(A2)-0.75,),"h")

祝順心,南無阿彌陀佛!
log.png
回复

使用道具 举报

 楼主| 发表于 2021-9-6 16:01 | 显示全部楼层
cutecpu 发表于 2021-9-6 15:44
=TEXT(MAX(MIN(INT(A2)+13/24,1*B2)-A2,)+MAX(B2-INT(A2)-14/24,)-MAX(MIN(1*B2,INT(A2)+1.375)-INT(A2)-0. ...

感谢,您这里是不是只去掉了中午一个小时的,我要去掉12点到14点的时间,只要改13为12就行了吧?
回复

使用道具 举报

发表于 2021-9-6 16:06 | 显示全部楼层
Hjfvba66 发表于 2021-9-6 16:01
感谢,您这里是不是只去掉了中午一个小时的,我要去掉12点到14点的时间,只要改13为12就行了吧?

对喔,改 12/24
回复

使用道具 举报

 楼主| 发表于 2021-9-6 16:23 | 显示全部楼层

好的,感谢,但是能不能请您解释一下这个公式的意思,不是特别理解,为什么会用max,min
回复

使用道具 举报

发表于 2021-9-6 16:31 | 显示全部楼层
Hjfvba66 发表于 2021-9-6 16:23
好的,感谢,但是能不能请您解释一下这个公式的意思,不是特别理解,为什么会用max,min


MAX(MIN(INT(A2)+13/24,1*B2)-A2,): 计算午休前的这一段
MAX(B2-INT(A2)-14/24,): 计算午休后的这一段
MAX(MIN(1*B2,INT(A2)+1.375)-INT(A2)-0.75,): 扣掉 18:00 ~ 隔天 09:00 的这一段

注:MAX(计算式,) ,主要是把负数值变为 0

祝順心,南無阿彌陀佛!

回复

使用道具 举报

发表于 2021-9-6 17:52 | 显示全部楼层
=IF(DATEDIF(A2,B2,"d")=0,IF(AND(F2<12,G2>14),G2-F2-2,),G2-F2+DATEDIF(A2,B2,"d")*24-15)
回复

使用道具 举报

 楼主| 发表于 2021-9-7 09:35 | 显示全部楼层
hugeinfo 发表于 2021-9-6 17:52
=IF(DATEDIF(A2,B2,"d")=0,IF(AND(F214),G2-F2-2,),G2-F2+DATEDIF(A2,B2,"d")*24-15)

F2,G2是啥?
回复

使用道具 举报

发表于 2021-9-7 13:13 | 显示全部楼层

=IF(DATEDIF(A2,B2,"d")=0,IF(AND((A2-INT(A2))*24<12,(B2-INT(B2))*24>=14),(B2-INT(B2))*24-(A2-INT(A2))*24-2,),(B2-INT(B2))*24-(A2-INT(A2))*24+DATEDIF(A2,B2,"d")*24-15)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 14:29 , Processed in 0.380041 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表