Excel – date范围包括一天的给定时间(更好的方法)
在Excel中给定一组date时间范围,例如:
Start Finish 13/03/2012 10:00:00 14/03/2012 03:00:00 15/03/2012 08:30:00 15/03/2012 10:00:00
还有一些TimeSpan如:
Start Finish 07:00:00 09:00:00
你如何确定时间跨度是否在某个给定的date范围内?
像这样的做法可能是一个开始:
AND(B2 < DATEVALUE(TEXT(B2, "dd/mm/yyyy")) + TIMEVALUE("07:00:00"), B3 >= DATEVALUE(TEXT(B3, "dd/mm/yyyy")) + TIMEVALUE("09:00:00"))
虽然它依赖于能够明确提供开始/结束值,而不是以任何顺序的两个date。 有条件的开始<=完成会做,但似乎是太复杂了。
有没有更好的办法?
编辑 :奖金分数的简单方法来查找时间跨度中的date范围的百分比
这应该给在时间跨度的小时数(但它绝对不是简单 !):
=MEDIAN(F2,G2+(G2<F2),MOD(B2,1)+(MOD(B2,1)<MOD(A2,1))) -MEDIAN(F2,G2+(G2<F2),MOD(A2,1)) +(F2<G2)*(MOD(B2,1)<MOD(A2,1))*MAX(MIN(MOD(B2,1),G2)-F2,0)
如果这大于0,date范围落在时间范围内,除以B2-A2为百分比。
例如date范围:下午6:00 – 上午9:00,时间跨度:上午7:00 – 下午7:00返回date范围的20%03:00。
似乎你认为date总是在同一天,情况如何?
尝试
=AND(MOD(A2,1)<=F2,MOD(B2,1)>=G2)
百分比
=MAX(0,MIN(MOD(B2,1),G2)-MAX(MOD(A2,1),F2))/(B2-A2)
Update:
如果date范围可以是无限的,那么可以使用这个公式获得时间范围内的总小时数
=(INT(B2)-INT(A2))*(G$2-F$2)+MEDIAN(F$2,G$2,MOD(B2,1))-MEDIAN(MOD(A2,1),G$2,F$2)
假定时间跨度不跨越午夜 – 如果时间跨度可能是午夜,例如可能是08:00 – 11:00,但也可能是22:00 – 03:00,那么这个公式应该工作
=(F$2>G$2)*(B2-A2)+SIGN(G$2-F$2)*((INT(B2)-INT(A2))*ABS(G$2-F$2)+MEDIAN(F$2,G$2,MOD(B2,1))-MEDIAN(MOD(A2,1),G$2,F$2))
假设date范围在A和B列,F2和G2中的时间范围。 应用以下公式并向下拖动。
H2 = IF(AND($F$2>=RIGHT(A2,8),$F$2<RIGHT(B2,8),$G$2>RIGHT(A2,8),$G$2<=RIGHT(B2,8)),1,0)
H列给出了在特定date范围内是否为真的情况。
I1 = SUM(H2:H4)/COUNT(H2:H4)
I1给你的百分比