我有一个日期选择器控件。当用户选择日期时,我想要一个文本框给出 30 个工作日后的信息,不包括周末和银行假日。这就是我现在所拥有的。
Switch (CountIf(BankHolidayDates, BankHolidayDate >=
StartDate.SelectedDate, BankHolidayDate <= DateAdd(StartDate.SelectedDate,
Value(gvDaysToDeadline) +
RoundDown(gvDaysToDeadline / 5, 0)*2+
Switch(Weekday(StartDate.SelectedDate),5,If(Mod( gvDaysToDeadline , 5)>0,2,0),
4,If(Mod( gvDaysToDeadline , 5)>1,2,0),
3,If(Mod( gvDaysToDeadline , 5)>2,2,0),
2,If(Mod( gvDaysToDeadline , 5)>3,2,0),
1,If(Mod( gvDaysToDeadline , 5)>4,2,0))
)),0,DateAdd(StartDate.SelectedDate,
Value(gvDaysToDeadline) +
RoundDown(gvDaysToDeadline / 5, 0)*2+
Switch(Weekday(StartDate.SelectedDate),5,If(Mod( gvDaysToDeadline , 5)>0,2,0),
4,If(Mod( gvDaysToDeadline , 5)>1,2,0),
3,If(Mod( gvDaysToDeadline , 5)>2,2,0),
2,If(Mod( gvDaysToDeadline , 5)>3,2,0),
1,If(Mod( gvDaysToDeadline , 5)>4,2,0))
),1,DateAdd(StartDate.SelectedDate,
Value(gvDaysToDeadline+1) +
RoundDown((gvDaysToDeadline+1) / 5, 0)*2+
Switch(Weekday(StartDate.SelectedDate),5,If(Mod( gvDaysToDeadline+1 , 5)>0,2,0),
4,If(Mod( gvDaysToDeadline+1 , 5)>1,2,0),
3,If(Mod( gvDaysToDeadline+1 , 5)>2,2,0),
2,If(Mod( gvDaysToDeadline+1 , 5)>3,2,0),
1,If(Mod( gvDaysToDeadline+1 , 5)>4,2,0))
),2,DateAdd(StartDate.SelectedDate,
Value(gvDaysToDeadline+2) +
RoundDown((gvDaysToDeadline+2) / 5, 0)*2+
Switch(Weekday(StartDate.SelectedDate),5,If(Mod( gvDaysToDeadline+2 , 5)>0,2,0),
4,If(Mod( gvDaysToDeadline+2 , 5)>1,2,0),
3,If(Mod( gvDaysToDeadline+2 , 5)>2,2,0),
2,If(Mod( gvDaysToDeadline+2 , 5)>3,2,0),
1,If(Mod( gvDaysToDeadline+2 , 5)>4,2,0))
))