EXCEL: формула для определения того, является ли дата «в рабочие часы», «вне рабочих часов» или «выходными» в excel - PullRequest
0 голосов
/ 23 июня 2019

Попытка создать формулу (ы) для отчета SLA, чтобы показать, подтвердил ли агент назначение в SLA или нет.

Я нашел формулу в одной из других публикаций, чтобы показать, что часы работы от

Mon-Fri ONLY from 8-5:30pm

Я хочу исключить вечер, выходные и праздничные дни.

Может ли он использовать вместо часов "выходные" или "выходные" или "праздничные дни" вместо использованияIN или OUT?

Как изменить формулу для работы?я пробовал и другие форматы, но это была длина романа, и он не работал.

=IF(AND(WEEKDAY(A2)>1,MOD(A2,1)*24>=8,MOD(A2,1)*24<=IF(WEEKDAY(A2)=7,14,20)
),"In","Out")

Раздел [7,14,20] был заменен на 17:30 (для 17:30).)

A2=start time (DD/MM/YYYY HH:MM)
B2=end time

1 Ответ

1 голос
/ 23 июня 2019

Я рекомендую вам сначала поместить ваши данные и критерии в таблицы, которые упростят организацию, ссылки и обновление. Чтобы сделать это быстро, выделите ваш диапазон, а затем Ctrl + T. Это откроет новую вкладку ленты для Table Design, и вы можете дать таблице имя. Я предпочитаю начинать все имена таблиц с t_. В приведенном ниже примере есть три таблицы:

1) t_BusinessHours 2) t_Holidays 3) t_Data_AcknowledgmentTimes

enter image description here

enter image description here

Для достижения желаемых результатов вам понадобится пара вложенных формул. Я разбил их, чтобы вы могли видеть, что делает каждая часть. Затем объедините их для одного столбца результатов. Как вы можете видеть, когда ваши данные находятся в таблицах, вы можете легко ссылаться на нужные вам части, используя имя таблицы и заголовки столбцов вместо букв / номеров строк.

enter image description here

После открытия?

=IF(TIME(HOUR(A2),MINUTE(A2),0)>=MIN(t_BusinessHours[Time]),"After Open","Before Open")

До закрытия?

=IF(TIME(HOUR(A2),MINUTE(A2),0)<MAX(t_BusinessHours[Time]),"Before Close","After Close")

Выходные

=IF(ISNUMBER(WEEKDAY(A2,2))>5,"Weekend","Weekday")

Отдых

=IF(COUNTIF(t_Holidays,EDATE(A2,0))>0,"Holiday","Not Holiday")

Соедините его (пример, не используйте этот - используйте тот, что ниже)

=IF(COUNTIF(t_Holidays,EDATE(A2,0))>0,"Holiday",
IF(ISNUMBER(WEEKDAY(A2,2))>5,"Weekend",
IF(AND(TIME(HOUR(A2),MINUTE(A2),0)<MIN(t_BusinessHours[Time]),
TIME(HOUR(A2),MINUTE(A2),0)>=MAX(t_BusinessHours[Time])),
"After Hours","During Business Hours")))

Результат (A2 в формуле выше заменяется ссылкой на таблицу)

=IF(COUNTIF(t_Holidays,EDATE([@[Start Time]],0))>0,"Holiday",
IF(ISNUMBER(WEEKDAY([@[Start Time]],2))>5,"Weekend",
IF(AND(TIME(HOUR([@[Start Time]]),MINUTE([@[Start Time]]),0)<MIN(t_BusinessHours[Time]),
TIME(HOUR([@[Start Time]]),MINUTE([@[Start Time]]),0)>=MAX(t_BusinessHours[Time])),"After Hours","During Business Hours")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...