Формула Excel: получить часы работы между датой и временем -

Общая формула

=(NETWORKDAYS(start,end)-1)*(upper-lower) +IF(NETWORKDAYS(end,end),MEDIAN(MOD(end,1),upper,lower),upper) -MEDIAN(NETWORKDAYS(start,start)*MOD(start,1),upper,lower)

Резюме

Чтобы рассчитать общее количество рабочих часов между двумя датами и временем, вы можете использовать формулу, основанную на функции ЧИСТРАБДНИ. В показанном примере E5 содержит эту формулу:

=(NETWORKDAYS(B5,C5)-1)*(upper-lower) +IF(NETWORKDAYS(C5,C5),MEDIAN(MOD(C5,1),upper,lower),upper) -MEDIAN(NETWORKDAYS(B5,B5)*MOD(B5,1),upper,lower)

где «нижний» - именованный диапазон H5, а «верхний» - именованный диапазон H6.

Примечание: этот пример был вдохновлен вызовом формулы на Chandoo и более полным решением, предоставленным мастером формул Барри Гудини на форуме MrExcel.

Объяснение

Эта формула вычисляет общее количество рабочих часов между двумя датами и временем, которые происходят между «нижним» и «верхним» временем. В показанном примере нижнее время - 9:00, а верхнее - 17:00. Они появляются в формуле как названные диапазоны «нижний» и «верхний».

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

Функция ЧИСТРАБДНИ обрабатывает исключение выходных и праздничных дней (если они указаны как диапазон дат). Вы можете перейти на NETWORKDAYS.INTL, если в вашем расписании нестандартные рабочие дни.

Форматирование вывода

Результат - число, которое представляет общее количество часов. Как и во все времена Excel, вам нужно будет отформатировать вывод с помощью подходящего числового формата. В показанном примере мы используем:

(h):mm

Квадратные скобки предотвращают перенос Excel, когда часы больше 24. Другими словами, они позволяют отображать часы больше 24. Если вам нужно десятичное значение для часов, вы можете умножить результат на 24 и отформатировать его как обычный номер.

Простая версия

Если время начала и окончания всегда будет находиться между нижним и верхним временем, вы можете использовать более простую версию этой формулы:

=(NETWORKDAYS(B5,C5)-1)*(upper-lower)+MOD(C5,1)-MOD(B5,1)

Нет времени начала и времени окончания

Чтобы рассчитать общее количество рабочих часов между двумя датами, предполагая, что все дни являются полными рабочими днями, вы можете использовать еще более простую формулу:

=NETWORKDAYS(start,end,holidays)*hours

См. Объяснение здесь для подробностей.

Интересные статьи...