Я написал функцию для подсчета количества рабочих часов, выраженного в рабочих днях между 2 датами. Возвращает десятичную. Однако, когда я окружаю функцию ARRAYFUNCTION (функция идет сюда), она округляет все десятичные дроби до ближайшего полного числа. Вот формула, оба Q и O являются datetime:
=((NETWORKDAYS(Q2:Q, O2:O)-2) *(8) +
IF( AND(TIME(HOUR(Q2:Q), MINUTE(Q2:Q), SECOND(Q2:Q)) > TIME(9,0,0), TIME(HOUR(Q2:Q), MINUTE(Q2:Q), SECOND(Q2:Q)) < TIME(17,0,0)),
HOUR(TEXT(TIME(17,0,0)-TIME(HOUR(Q2:Q), MINUTE(Q2:Q), SECOND(Q2:Q)), "h:mm:ss")) + MINUTE(TEXT(TIME(17,0,0)-TIME(HOUR(Q2:Q), MINUTE(Q2:Q), SECOND(Q2:Q)), "h:mm:ss"))/60 + SECOND(TEXT(TIME(17,0,0)-TIME(HOUR(Q2:Q), MINUTE(Q2:Q), SECOND(Q2:Q)), "h:mm:ss"))/3600,
IF( TIME(HOUR(Q2:Q), MINUTE(Q2:Q), SECOND(Q2:Q)) < TIME(9,0,0), 8, 0 ) ) +
IF( AND(TIME(HOUR(O2:O), MINUTE(O2:O), SECOND(O2:O)) > TIME(9,0,0), TIME(HOUR(O2:O), MINUTE(O2:O), SECOND(O2:O)) < TIME(17,0,0)),
HOUR(TEXT(TIME(HOUR(O2:O), MINUTE(O2:O), SECOND(O2:O)) - TIME(9,0,0), "h:mm:ss")) + MINUTE(TEXT(TIME(HOUR(O2:O), MINUTE(O2:O), SECOND(O2:O)) - TIME(9,0,0), "h:mm:ss"))/60 + SECOND(TEXT(TIME(HOUR(O2:O), MINUTE(O2:O), SECOND(O2:O)) - TIME(9,0,0), "h:mm:ss"))/3600,
IF( TIME(HOUR(O2:O), MINUTE(O2:O), SECOND(O2:O)) > TIME(17,0,0), 8,0 )
)
)/8