Два отдельных диапазона рабочих часов (как смены) между диапазонами дат

Я столкнулся с дилеммой, которую, как я думал, легко преодолею, но в итоге получил другие результаты.

Итак, я использовал следующую формулу:

=(NETWORKDAYS(H6,N6)-1)*($F$2-$E$2)+IF(NETWORKDAYS(N6,N6),MEDIAN(MOD(N6,1),$F$2,$E$2),$F$2)-MEDIAN(NETWORKDAYS(H6,H6)*MOD(H6,1),$F$2,$E$2)

Эта формула работает отлично, так как я модифицировал ее для использования NETWORKDAYS.INTL, потому что все рабочие дни являются рабочими, а рабочее время - с 8:00 до 23:00.

Мой модифицированный код:

=(NETWORKDAYS.INTL([@[DC_CREATION_DATE]],[@[ACTUAL_END_DATE]],"0000000")-1)*(upper-lower)
+IF(NETWORKDAYS.INTL([@[ACTUAL_END_DATE]],[@[ACTUAL_END_DATE]],"0000000"),MEDIAN(MOD([@[ACTUAL_END_DATE]],1),upper,lower),upper)
-MEDIAN(NETWORKDAYS.INTL([@[DC_CREATION_DATE]],[@[DC_CREATION_DATE]],"0000000")*MOD([@[DC_CREATION_DATE]],1),upper,lower)

Где:

  • DC_CREATION_DATE = Дата начала
  • ACTUAL_END_DATE = Дата окончания
  • upper = Именованный диапазон, содержащий время окончания, например, 23:00
  • lower = Именованный диапазон, содержащий время начала, т.е. 8:00 AM

Теперь проблема в том, что для определенного месяца рабочее время дня меняется на сменное:

  • Время начала 1 = 11:00
  • Время окончания 1 = 17:00
  • Время начала 2 = 21:00
  • Время окончания 2 = 2:00 AM

Любое время вне указанного времени считается нерабочим. Полученные нами TT МОГУТ быть вне рабочего времени, но я буду рассчитывать только продолжительность рабочего времени.

Я пытался дважды использовать одну и ту же формулу в одном и том же диапазоне дат (в первый раз верхнее значение становится 17:00, а нижнее - 11:00, а результат сохраняется в ячейке, во второй раз верхнее значение становится равным 2: 00 AM и ниже становится 9:00 PM, и результат сохраняется в другой ячейке), а затем складываются два результата в отдельные ячейки, чтобы получить общее рабочее время между диапазоном рабочих часов.

Увы, я думал, что это так просто, но я вижу разные результаты для обеих формул, когда они выполняются. Потому что, если время находится за пределами рабочего диапазона, даже для начала и конца, оно должно вернуть 0. (я считаю, что могу преодолеть это, используя IF)

######## - это поле, показывающее отрицательное значение. Так как я форматирую все ячейки как [h]: mm

ВЫХОД

Кто-нибудь может мне помочь в этом отношении?


person Major Aly    schedule 09.06.2021    source источник
comment
Вы уверены, что не получаете ##########, потому что вы вычисляете верхнее-нижнее на основе времени, а не формата даты / времени (который дал бы отрицательный результат, и я ожидал бы #### ##### для отрицательной продолжительности в excel (!))? т.е. вторая смена имеет верхнее значение 2:00 и нижнее значение 21:00, поэтому, если вы настроены только на формат времени, вам понадобится какой-то if (date_end ›date_start, 2nd_working_hrs = time_end + 1 - time_start, time_end-time_start ) (конец обмена, начните с верхнего, нижнего, соответственно, по мере необходимости - но вы уловили мою суть, верно? См. это решение, которое похоже (и проголосуйте за меня! :)   -  person JB-007    schedule 14.06.2021
comment
... (продолжение): stackoverflow.com/questions/67351953/ PS: если это сработает, дайте мне возможность предложить вознаграждение - это единственная причина, по которой я нашел / посмотрел на этот вопрос грустно :( :)   -  person JB-007    schedule 14.06.2021


Ответы (1)


Так как ваше время верхнего 2-го уровня на следующий день, вам необходимо ввести его как таковое.

Базовое значение 2:00 AM - 0.083333333. Чтобы сделать это на следующий день, введите 1.083333333. Вы можете по-прежнему форматировать его как 2:00 AM, если хотите, это базовое значение, которое использует ваша формула.

Некоторые примеры с неизменной формулой (кроме тех, которые включают верхний / нижний 1 и 2)

введите описание изображения здесь

person chris neilsen    schedule 14.06.2021
comment
Спасибо и приношу свои извинения за то, что вернулся так поздно. Добавление времени +1 к 2 часам ночи решило проблему, поэтому я в основном пошел по маршруту, по которому вычисление времени производилось дважды (сначала с 11 утра до 5 вечера, а затем с 9 вечера до 2 ночи) в том же диапазоне дат, а затем время было добавлено вместе, чтобы получить общее рабочее время. - person Major Aly; 20.06.2021