Предполагая, что даты в одном и том же году и пренебрегая небольшой ошибкой округления, я нашел жизнеспособное решение:
Сначала я объясню это, а затем добавлю формулу ниже.
Я разделил решение в нескольких случаях, если это
ЕСЛИ 1: ДАТЫ В ТО ЖЕ НЕДЕЛЕ
IF(WEEKNUMBER(A2)=WEEKNUMBER(B2);
ЕСЛИ 1.1: ДАТЫ В ТО ЖЕ ДЕНЬ
IF(DAY(A2)=DAY(B2));
Возьмите часы конечной даты минус часы начальной даты = результат
(B2-A2)*24;
ЕСЛИ 1.2: ДАТЫ НЕ В ТО ЖЕ ДЕНЬ
Возьмите день конечной даты минус день начальной даты (= дни между обеими датами), умножьте на 8 (= 17-9) и добавьте разницу в часах. Функция MOD используется, чтобы отрезать дни дат и оставаться только со временем.
(DAY(B2)-DAY(A2))*(17-9)+(MOD(B2,1)-MOD(A2,1))*24);
ЕСЛИ 2: ДАТЫ НЕ В ТО ЖЕ НЕДЕЛЕ
Я вычисляю количество часов между этими неделями, затем добавляю часы даты начала к концу начальной недели (к счастью, год начался в пятницу, поэтому я мог просто сделать номер недели (startdate)* 7 и, наконец, добавьте количество часов с начала недели до даты окончания.
(WEEKNUMBER(B2)-WEEKNUMMER(A2)-1)*5*(17-9)+(WEEKNUMBER(A2)*7-QUOTIENT(A2;1))*(17-9)+17+(QUOTIENT(B2;1)-(WEEKNUMBER(B2)*7-4))*(17-9)+(MOD(B2;1)-MOD(A2;1))*24-9)
В конце вам просто нужно собрать все эти куски кода вместе, и вы можете рассчитать рабочие часы между датами.