Вы можете разделить это на три составляющие (часть первого дня, полные рабочие дни, часть последнего дня)
Давайте начнем со средней части. Здесь вы можете использовать NETWORKDAYS и вычесть дату начала и окончания. Я предполагаю дату начала в A1 и дату окончания в B1. Чтобы исключить праздничные дни, вам нужно вести список праздничных дней на своем листе. Формула предполагает, что этот список находится в диапазоне C1: C10. Результаты умножаются на 10, поскольку в вашем рабочем дне 10 часов.
=MAX((NETWORKDAYS(A1,B1,C1:C10)-NETWORKDAYS(A1,A1,C1:C10)-NETWORKDAYS(B1,B1,C1:C10))*10,0)
Для фракций, которые вам нужно будет определить, является ли сам день выходным, мы снова используем функцию NETWORKDAYS в качестве коэффициента, который будет равен либо 0, либо 1. Теперь нам нужно только определить часы, которые нужно добавить для дня. В зависимости от желаемой степени детализации вы можете рассмотреть часы, минуты или даже секунды. Я буду использовать часы и минуты как дробь (минуты / 60 = часы).
За первый день вы получите
=MAX(17-MAX(HOUR(A1)+MINUTE(A1)/60,10),0)*NETWORKDAYS(A1,A1,C1:C10)
За последний день вы получите
=MAX(MIN(HOUR(B1)+MINUTE(B1)/60,17)-10,0)*NETWORKDAYS(B1,B1,C1:C10)
Объединение всего этого оставляет нам:
=MAX(17-MAX(HOUR(A1)+MINUTE(A1)/60,10),0)*NETWORKDAYS(A1,A1,C1:C10)+MAX((NETWORKDAYS(A1,B1,C1:C10)-NETWORKDAYS(A1,A1,C1:C10)-NETWORKDAYS(B1,B1,C1:C10))*10,0)+MAX(MIN(HOUR(B1)+MINUTE(B1)/60,10)-10,0)*NETWORKDAYS(B1,B1,C1:C10)