想在excel里算n个工作日之后的日期,直接用workday函数最省心:填好开始日期、要隔的工作日数、要排除的节假日区域,excel会自动跳过周末和你指定的假期,不用手动数日子。通用公式是 =workday(开始日期,工作日天数,节假日区域),做项目排期、算合同截止日、定发货时间都能用。
提前备好三类内容就行:开始日期、要往后推的工作日数、需要额外排除的节假日清单。节假日清单不是必填项,没填的话WORKDAY只会默认排除周六周日。要是要算国内法定假或者公司自己的放假安排,把所有假期日期单独列成一片区域,直接当第三个参数引用就好。
第一步:先用两个参数算默认工作日
要是你只需要跳过周六周日,直接在要出结果的单元格里输 =WORKDAY(A2,7) 就行。A2单元格存的是开始日期,数字7代表往后推7个工作日。算出来的结果不是直接在开始日期上加7天,碰到周末会自动往后顺延。

第二个参数的数字支持正负数:正数是往后算,比如算交付日期;负数是往前倒推,比如从项目截止日反推最晚得哪天开工。要是你填的工作日数是小数,Excel会自动取整,所以做排期的时候直接填整数就好。
第二步:把节假日区域放进第三个参数
光排除周末很多时候不够用,比如中间碰到端午、国庆、公司统一放假,你就把这些假期日期单独放在一个区域里,公式写成 =WORKDAY(A2,7,C2:C3) 就行。这里A2是开始日期,7是要推的工作日数,C2:C3就是你要额外排除的节假日范围。

存节假日的区域里最好只放要排除的日期,别混进文字说明、空格,或者不是日期格式的内容。如果公式跳出 #VALUE! 报错,先检查开始日期和假期列表里的内容,是不是都是Excel能正常识别的日期格式。
第三步:长周期排期要把法定假期列完整
做长周期项目排期的时候,节假日区域别只放一两个节日。举个例子,从2020年9月1日往后推200个工作日,要是没把国庆、元旦、春节、清明、劳动节、端午这些假期都排除,算出来的结果会比实际交付日期早。把所有涉及到的假期都列在A4:A14这类区域里,当成第三个参数引用,出来的结果才更贴合实际工作安排。

公式直接写 =WORKDAY(A2,A3,A4:A14) 就行,A2存起始日期,A3存项目需要的总工作日数,A4:A14放全部假期列表。之后要是假期安排变了,你直接改假期列表里的内容就行,整张排期表其他地方都不用动。
第四步:单休或特殊休息日改用 WORKDAY.INTL
普通的WORKDAY函数默认把周六周日算成休息日,要是你们公司是单休,或者部分岗位只休周日,直接换用WORKDAY.INTL函数就行。比如 =WORKDAY.INTL(A2,1,11) 表示从A2的日期开始往后推1个工作日,按“只休周日”的规则计算。

要是你需要更灵活的休息规则,WORKDAY.INTL的第三个参数还可以填7位0和1组成的代码,从左到右依次对应周一到周日,0代表当天是工作日,1代表当天休息。比如 "0000011" 就是默认的周六周日双休,"0000001" 就是只休周日。碰到调休的情况,再把实际放假的日期放到第四个参数里排除就行。
第五步:检查结果是否符合业务规则
全部算完别光看公式没报错就完事,最好核对下最终日期是不是符合你这边的实际规则,确实落在正常工作日里。尤其是春节、国庆这种连休的长假,节假日清单少加一天,最终结果就可能提前一天。调休补班的情况更复杂,WORKDAY本身不会自动识别哪周周末要补班,得你自己在规则里单独处理。
最省心的搭配方式是:算短周期日期直接用 =WORKDAY(A2,B2);涉及要排除的假期就补上第三个参数;是单休或者自定义周末规则的就换WORKDAY.INTL;公司有固定调休制度的,就把休息日、补班日期单独存在辅助表里维护。这么做公式本身不复杂,之后改假期安排也不会把整张排期表搞乱。


















