Мне кажется, я нашел достаточно пуленепробиваемый метод для расчета 10-дневного срока, который учитывает праздничные и выходные дни. 1) Рассчитайте, является ли двухнедельный период понедельником, и, если да, добавьте только 11 дней (при условии, что начальный день считается днем 1 вашего 10-дневного периода). В противном случае вы добавляете 13 к счету за 10 рабочих дней плюс два выходных (помните, что начальная дата уже считается Днем1; ваши переменные будут 12 и 14, если вы НЕ посчитали начальную дату Днем1). 2) Создайте уникальный рассчитанный столбец для каждого выходного дня и верните значение 1, если выходной попадает в диапазон. 3) Определите свою «валовую дату», добавив значения (выходные и праздничные дни) к дате начала. 4) Определите, выпадает ли ваша общая дата на субботу или воскресенье, и если да, то верните соответствующее количество дней, чтобы отложить до понедельника. 5) Добавьте все выходные, праздничные дни и добавленные значения субботы и воскресенья к дате начала, в которой указана дата оплаты.
ПРИМЕЧАНИЕ. Единственные проблемы, которые я вижу здесь, это то, что выходной день переносит срок оплаты в выходные дни, а затем переносит срок оплаты в понедельник, который, как оказалось, является еще одним выходным днем. Это не произошло в моем графике праздников, но, возможно, в вашем. Кроме того, вам нужно будет добавлять новые праздники каждый год, поэтому вам потребуется заново создавать массивы столбцов для создания длинного списка. Кроме того, вы можете начать новый список каждый год.
C_Wknd =IF(TEXT(WEEKDAY([Complaint Created On]),"ddd")="Mon",11,13)
C_NYDay =IF(AND([Complaint Created On]<=DATE(2009,1,1),([Complaint Created On])+C_Wknd>=DATE(2009,1,1)),"1","0")
C_MLKDay =IF(AND([Complaint Created On]<=DATE(2009,1,19),([Complaint Created On])+C_Wknd>=DATE(2009,1,19)),"1","0")
C_MemDay =IF(AND([Complaint Created On]<=DATE(2009,5,25),([Complaint Created On])+C_Wknd>=DATE(2009,5,25)),"1","0")
C_PresDay =IF(AND([Complaint Created On]<=DATE(2009,2,16),([Complaint Created On])+C_Wknd>=DATE(2009,2,16)),"1","0")
C_IndDay =IF(AND([Complaint Created On]<=DATE(2009,7,4),([Complaint Created On])+C_Wknd>=DATE(2009,7,4)),"1","0")
C_LabDay =IF(AND([Complaint Created On]<=DATE(2009,9,7),([Complaint Created On])+C_Wknd>=DATE(2009,9,7)),"1","0")
C_ColDay =IF(AND([Complaint Created On]<=DATE(2009,10,12),([Complaint Created On])+C_Wknd>=DATE(2009,10,12)),"1","0")
C_VetDay =IF(AND([Complaint Created On]<=DATE(2009,11,11),([Complaint Created On])+C_Wknd>=DATE(2009,11,11)),"1","0")
C_ThxDay =IF(AND([Complaint Created On]<=DATE(2009,11,26),([Complaint Created On])+C_Wknd>=DATE(2009,11,26)),"1","0")
C_XmsDay =IF(AND([Complaint Created On]<=DATE(2009,12,25),([Complaint Created On])+C_Wknd>=DATE(2009,12,25)),"1","0")
C_GrossDte =[Complaint Created On]+C_Wknd+C_NYDay+C_MLKDay+C_MemDay+C_PresDay+C_IndDay+C_LabDay+C_ColDay+C_VetDay+C_ThxDay+C_XmsDay
C_EndSat =IF(TEXT(WEEKDAY(C_GrossDte),"ddd")="Sat",2,0)
C_EndSun =IF(TEXT(WEEKDAY(C_GrossDte),"ddd")="Sun",1,0)
Resolution Due =C_GrossDte+C_EndSat+C_EndSun