若是不考虑调休:变量
=NETWORKDAYS(C2,D2,holidays)工作
若是考虑到调休:日期
维护一个表, 包括节假日和周末 (只含放假的日期, 不含调成上班的)
=NETWORKDAYS.INTL(D2,C2,"0000000",Holiday!A:A)-1
这个公式, "0000000" 7个0表示一周都是工做日, 维护的holiday来判断放假的日期,"D2"是周末的不用在最后-1 (能够IF(weekday())判断下就好了)tar
若是再把最终结果是0或者-1的状况考虑进来:
=IF(IF(OR(WEEKDAY(D2)=7,WEEKDAY(D2)=1),NETWORKDAYS(D2,E2,holidayIT),NETWORKDAYS(D2,E2,holidayIT)-1)<=0,1,IF(OR(WEEKDAY(D2)=7,WEEKDAY(D2)=1),NETWORKDAYS(D2,E2,holidayIT),NETWORKDAYS(D2,E2,holidayIT)-1))
看起来很长,提取出变量来看就简单了
var IsStartDayWeekend = OR(WEEKDAY(D2)=7,WEEKDAY(D2)=1)
var businessDays = NETWORKDAYS(D2,E2,holidayIT)
var businessDaysNoWeekend = IF(IsStartDayWeekend,businessDays,businessDays-1)
这三个变量提取出来,表达式就剩下这点了 =IF(businessDaysNoWeekend<=0,1,businessDaysNoWeekend)