给出excel中的一组DateTime范围,例如:
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
您如何确定时间跨度是否在某个给定的日期范围内?
这样的方法可能是一个开始:
AND(B2 < DATEVALUE(TEXT(B2, "dd/mm/yyyy")) + TIMEVALUE("07:00:00"),
B3 >= DATEVALUE(TEXT(B3, "dd/mm/yyyy")) + TIMEVALUE("09:00:00"))
虽然它依赖于能够明确地提供开始/结束值而不是任何顺序的两个日期。有条件的开始&lt; =完成会做,但看起来它过于复杂。
有更好的方法吗?
修改:简单方法的加分点,用于查找时间跨度内日期范围的百分比
答案 0 :(得分:4)
好像你假设日期总是在同一天,是这样吗?
尝试
=AND(MOD(A2,1)<=F2,MOD(B2,1)>=G2)
百分比
=MAX(0,MIN(MOD(B2,1),G2)-MAX(MOD(A2,1),F2))/(B2-A2)
Update:
如果日期范围可以是无限制的,1天或多天,那么您可以使用此公式获得时间跨度内的总小时数
=(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))
答案 1 :(得分:2)
这应该给出时间跨度内的小时数(但绝对不是简单!):
=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,则日期范围落在时间范围内,将此除以B2-A2为百分比。
e.g。日期范围:下午6:00 - 上午9:00,时间跨度:上午7:00 - 下午7:00返回03:00,这是日期范围的20%。
答案 2 :(得分:0)
假设日期范围在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列告诉您特定日期范围是否为真。
I1 = SUM(H2:H4)/COUNT(H2:H4)
I1为您提供百分比