excel中用networkdays计算含节假日的工作日天数,workday反向推算日期,networkdays.intl配合自定义非工作日清单处理调休等复杂排班。

你需要在Excel里快速算出两个日期之间真正能干活的天数,或者从今天往后推20个工作日是哪天,还得自动跳过周末和春节、国庆这些法定假日——手动翻日历太慢,还容易漏掉调休日。
用NETWORKDAYS统计两个日期间的工作日天数
在目标单元格输入公式:=NETWORKDAYS(开始日期单元格, 结束日期单元格, 节假日区域)。比如A2是2026/6/1,B2是2026/7/15,H2:H10是已列好的节假日列表,就写=NETWORKDAYS(A2,B2,$H$2:$H$10)。
注意:节假日区域必须用绝对引用(加$),否则往下拖动时会错位;如果没节假日要排除,第三参数直接省略,写成=NETWORKDAYS(A2,B2)即可。
这个函数默认把周六、周日全算作休息日,且【开始日期和结束日期都包含在计算内】——比如6月1日周一到6月1日当天,结果就是1个工作日。
用WORKDAY反向推算N个工作日后的具体日期
方法一:正向推算到期日
已知项目6月5日启动,工期需12个工作日,节假日列在H2:H8,则在单元格中输入:=WORKDAY(A2,12,$H:$H),A2填入2026/6/5。
方法二:倒推最晚开工日
客户要求7月20日交付,工期15个工作日,那就把days参数设为负数:=WORKDAY(D2,-15,$H$2:$H$8),D2填入2026/7/20。
WORKDAY函数会自动跳过周末和你指定的每个节假日,哪怕遇上连续两天假期,它也会继续往后顺延,直到凑够完整工作日数为止。
处理调休日、单休、大小周等非常规排班
第一步:准备一张完整“非工作日清单”
把所有不上班的日子——包括周六、周日、法定假日、调休补班日(如2026年9月27日星期六因中秋调休上班,那它就不是非工作日)、公司年假集中放假日——全部列在单独一列,比如J2:J50。
第二步:用NETWORKDAYS.INTL函数,把周末类型设为“0000000”
这个七位字符串表示每天都是工作日,不自动排除任何一天。公式写成:=NETWORKDAYS.INTL(A2,B2,"0000000",$J$2:$J$50)。
第三步:确保J列所有日期都是Excel识别的真正日期格式
如果某行显示“2026-10-1”,但其实是文本,NETWORKDAYS.INTL会直接忽略它——【必须用DATE函数或标准日期输入,不能粘贴带引号的日期字符串】。











