Excel - диапазон дат включает заданное время суток (лучший подход) - PullRequest
3 голосов
/ 15 марта 2012

Учитывая набор диапазонов DateTime в Excel, таких как:

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"))

Хотя он опирается на возможность явно указывать начальные / конечные значения, а не две даты в любом порядке. Условие на начало <= конец будет делать, но кажется, что это слишком сложно. </p>

Есть ли лучший способ?

Редактировать : Бонусные баллы за простой подход к нахождению процента диапазона дат, попадающего в промежуток времени

Ответы [ 3 ]

4 голосов
/ 15 марта 2012

Похоже, вы предполагаете, что даты всегда будут одним и тем же днем, так ли это?

Попробуйте

=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))

2 голосов
/ 15 марта 2012

Это должно дать количество часов, приходящихся на промежуток времени (но это определенно не просто !):

=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 для процента.

например. Диапазон дат: 18:00 - 9:00, интервал времени: 7:00 - 19:00, возвращается 03:00, что составляет 20% диапазона дат.

0 голосов
/ 15 марта 2012

Скажите, что диапазоны дат находятся в столбцах 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 дает вам процент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...