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给你的百分比