Excel - 日期范围包括给定的时间(更好的方法)

时间:2012-03-14 21:30:37

标签: excel datetime excel-formula

给出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; =完成会做,但看起来它过于复杂。

有更好的方法吗?

修改简单方法的加分点,用于查找时间跨度内日期范围的百分比

3 个答案:

答案 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为您提供百分比