1

Резюме:

Я знаю, что функция NETWORKDAYS может использоваться для определения количества рабочих дней (= исключая выходные и праздничные дни) между двумя датами. Но что, если я хочу узнать количество рабочих часов , скажем, между вчерашним 14:00 и сегодняшним 10:00?

-> Мне нужна функция NETWORKINGHOURS которая не существует (Excel 2003). По сути, возьмите NETWORKDAYS и добавьте два дополнительных параметра start of working day и end of working day . Это звучит просто, но мои попытки создать его по формуле быстро становятся очень сложными.

Вопрос:
Как я могу заставить мои networkhours работать в сети, даже если время окончания дня раньше времени начала работы?

Подробности:

У меня есть лист Excel с двумя столбцами дата + время. Я хочу рассчитать количество дней + часы + минуты между временными метками, но только считать рабочие часы.

С помощью функции NETWORKDAYS можно найти рабочие дни, исключая выходные и праздничные дни (вычитая 2 из его результата, поскольку функция считает как начальный, так и конечный день независимо от времени). Все идет нормально. Это выглядит так (вдохновение отсюда):

=CONCATENATE(NETWORKDAYS($A6;B6;holidays)-1
;"d "
;HOUR(MIN(endofday;MOD(B6;1))-MAX(startofday;MOD($A6;1)))
;":"
;IF(MINUTE(MIN(endofday;MOD(B6;1))-MAX(startofday;MOD($A6;1)))>9
;MINUTE(MIN(endofday;MOD(B6;1))-MAX(startofday;MOD($A6;1)))
;CONCATENATE("0";MINUTE(MIN(endofday;MOD(B6;1))-MAX(startofday;MOD($A6;1))))))

дает мне очень хорошие результаты в формате 1d 2:30 при условии, что я назвал ячейки для startofday (08:00), endofday (16:00) и holidays (столбец со значениями даты).

Это работает очень хорошо, за исключением того, что формула прерывается, когда время окончания дня предшествует времени начала дня. Вот мои тестовые данные и формулы:

альтернативный текст

networkdays-2 =NETWORKDAYS($A6;B6;holidays)-2
часы =MIN($B$3;MOD(B6;1))-MAX($A$3;MOD(A6;1))
минуты =MINUTE(MIN(endofday;MOD(B6;1))-MAX(startofday;MOD($A6;1)))
сетевые часы видят кодовый блок выше

1 ответ1

1

целые рабочие дни = NETWORKDAYS - 2

время, отработанное в первый день = MAX(0, endofday - MAX(время начала, startofday))

время, отработанное в последний день = MAX(0, MIN(entime, endofday) - startofday)

общее количество рабочих дней = все рабочие дни + INT((время, отработанное в первый день + время, отработанное в последний день) / (конец дня - начало дня))

дополнительное время (после общего количества дней) = MOD (время, отработанное в первый день + время, отработанное в последний день, endofday - startofday)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .