Определите количество дней (не включая выходные) на основе предоставленных часов - PullRequest
0 голосов
/ 29 мая 2018

У меня есть две важные детали, которые вводятся в таблицу Excel, Job_Start_Date и Job_Hours (означающие часы, необходимые для выполнения задания).Учитывая определенные рабочие часы (например, с 7:00 до 15:30), мне нужно рассчитать, какой день и в какое время они закончат.У меня уже есть этот базовый бит, но я не могу понять, как пропустить выходные в этом расчете (обратите внимание, что есть логическое значение для Sat / Sun, которое определяет, следует ли пропускать этот день).

Вот пример данных
и пример визуализации данных: (Ошибки DIV вызваны тем, что количество сотрудников равно 0, не обращайте на это внимания.) .

Это формула, используемая в визуализаторе (массивное совпадение индексов)

=IFNA(INDEX(INDIRECT(Allocation!$A$1), MATCH(1,($A3 = INDIRECT(Allocation!$K$1)) 
  * (C$1 >= INDIRECT(Allocation!$C$1)) * (C$1 <= INDIRECT(Allocation!$D$1)) 
  * IF(C$1 = INDIRECT(Allocation!$C$1), ($B3 >= INDIRECT(Allocation!$E$1)), 
  ($B3 >= INDIRECT(Allocation!$I$1))) * IF(C$1 = INDIRECT(Allocation!$D$1), 
  ($B3 < INDIRECT(Allocation!$F$1)), ($B3 < INDIRECT(Allocation!$J$1))), 0)),"")

Как вы можете видеть на изображении, субботу нужно пропускать (будучи FALSE), ноэто все еще показано на визуализаторе.Тем не менее, если я включу выписку, которая соответствует условию субботы (поэтому она отображается только в субботу, если TRUE), она не изменит дату окончания и, следовательно, не перенесет последний день в понедельник.

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

Спасибо.

1 Ответ

0 голосов
/ 29 мая 2018

Вот как у меня это работает, используя WORKDAY.INTL.

Первый - это вложенный IF, чтобы определить, какой тип выходных использовать для функции workday.intl

Weekend=IF(OR([@[JOB SATURDAY]], [@[JOB SUNDAY]]), IF(AND([@[JOB SATURDAY]], [@[JOB SUNDAY]]), -1, IF([@[JOB SATURDAY]], 11, 17)), 1)

Затем второй оператор if, который ссылается на это значение, а затем выплевывает правильную дату

=IF([@[Weekend]] = -1, [@[JOB START DATE]]+[@[Working Days]], WORKDAY.INTL([@[JOB START DATE]], [@[Working Days]], [@[Weekend]]))
...