计算工做日

若是不考虑调休:变量

=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)

相关文章
相关标签/搜索