办公软件

WPS/Excel 工作日排期:批量填日期、跳过周末,再按调休表复核

约 6 分钟读完
WPS/Excel 工作日排期:批量填日期、跳过周末,再按调休表复核

摘要

本文给出 Excel 与 WPS 表格排工作日的实操流程:先用 WORKDAY 批量生成并跳过周末,再录入“调休上班”和“放假日期”例外表,用 COUNTIF、WEEKDAY 判断每个自然日的状态,最后筛选出完整工作日清单,并核对日期格式与结果数量。

本文目录

排工作日时,真正容易出错的并不是跳过周六、周日,而是中国节假日安排中还会出现“某个周末需要上班”。只用一个公式生成周一至周五,通常会漏掉调休上班日;只套用节假日名单,又可能把本来用于调休的周末排除掉。更稳妥的做法是:先快速生成基础日期,再用调休表逐日复核。

适用设备与版本

本文以 Windows 桌面版 Microsoft Excel 2019、Excel 2021、Microsoft 365,以及 WPS Office 2019 及以上桌面版为例。macOS 版 Excel 和 WPS 的函数基本相同,但筛选、填充菜单位置可能略有差别。手机端也能输入基础公式,不过批量填充、筛选和复制可见行不够方便,正式排期建议使用电脑。

一、先用公式批量生成只跳过周末的日期

  1. 新建一张工作表并命名为“排期”。在 A1 输入“工作日期”,在 A2 输入已经确认的第一个工作日。日期应使用真实的日期值,例如输入“2025/3/3”,而不是从聊天软件复制来的文本。

  2. 在 A3 输入下面的公式:

    =WORKDAY(A2,1)

    按 Enter 后,A3 会得到下一个工作日。选中 A3,将鼠标移到单元格右下角的小方块上,拖动到需要的末行,即可连续填充。也可以先选中 A3:A100,再按 Ctrl+D 向下填充。

  3. 如果 A2 存放的是“起始自然日”,并且希望从其后的第一个工作日开始,可以改用固定起始日公式:

    =WORKDAY($A$2,ROW()-ROW($A$3)+1)

    把公式放在 A3 后向下填充,序号会自动增加。

  4. 如果日期显示成一串数字,右键单元格选择“设置单元格格式”,再选择“日期”;如果显示为“#####”,直接拖宽 A 列即可。

需要注意,此时的 WORKDAY 只跳过周六和周日,并不知道当年的法定放假安排,也不会自动补入调休上班的周末,所以这只能作为第一版。

二、建立调休例外表

  1. 新建工作表并命名为“调休表”。A1 输入“调休上班日期”,B1 输入“放假日期”。

  2. 根据当年国务院办公厅公布的节假日安排,把需要上班的周末日期逐个录入 A 列,把放假日期逐个录入 B 列。放假日期列最好录入通知中整个假期区间的每一天,至少不能漏掉原本属于周一至周五、但因放假需要排除的日期。

  3. 例外日期也必须使用真实日期,不要填写“10月1日至7日”这样的区间文本,也不要合并单元格,否则后面的 COUNTIF 无法准确匹配。

  4. 跨年度排期时,可以把两个年度的例外日期接在同一列中;公式仍然按完整日期匹配,不必修改。

三、建立完整的调休复核表

  1. 再新建一张工作表,命名为“日期复核”。A2 输入排期开始日期,A3 输入 =A2+1,然后连续填充到排期结束日期。这样可以覆盖开始日在内的每一个自然日,不会漏掉周末。

  2. 在 B2 输入“状态”,B3 输入下面的公式:

    =IF(A3="","",IF(COUNTIF('调休表'!$A$2:$A$200,A3)>0,"调休上班",IF(COUNTIF('调休表'!$B$2:$B$200,A3)>0,"放假",IF(WEEKDAY(A3,2)<=5,"工作日","周末休息"))))

  3. 公式的判断顺序很关键:先检查是否为调休上班日,再检查是否放假,最后才按星期判断普通工作日或周末。WEEKDAY 的第二个参数设为 2 时,星期一为 1、星期日为 7,因此 <=5 就表示周一至周五。

  4. 将 B3 向下填充到与 A 列相同的末行。如果例外日期很多,可以把公式中的 $A$2:$A$200 和 $B$2:$B$200 改成更大的范围,例如 $A$2:$A$500。

四、筛选并生成最终工作日清单

  1. 选中复核表的 A、B 两列数据。Excel 进入“数据→筛选”,WPS 同样进入“数据→筛选”,然后点击 B 列筛选按钮。

  2. 在状态下拉列表中只保留“工作日”和“调休上班”。这样,法定放假日与普通周末都会被隐藏,被安排上班的周六、周日则会保留下来。

  3. 复制筛选后可见的 A 列日期,粘贴到“最终排期”工作表。粘贴时选择“选择性粘贴→数值”,避免最终清单仍依赖前面的辅助列。

  4. 为核对数量,可在复核表空白单元格输入 =SUBTOTAL(103,A2:A200)。筛选状态下,该公式只统计可见日期,结果应与最终排期中的日期数量一致。

  5. 最后将第一版 WORKDAY 结果与复核结果对照:因放假而被排除的工作日应消失,调休上班的周末应被补回。如果两者完全一致,说明结果基本正确。

注意事项

  • 节假日安排每年可能调整,应以中国政府网公布的当年度通知为准,不要照搬往年表格或来源不明的日历模板。公司另有轮班、值班安排时,应以公司发布的最终考勤表为准。
  • WORKDAY 的第三个参数可以加入“放假日期”范围,但它只能扣除假期,无法把某个周末变成工作日,也不能完整处理中国的调休安排。因此,存在调休上班日时,应使用本文的“例外表+完整复核表”方法。
  • 如果日期在单元格中靠左显示,通常说明它被当成了文本。删除后重新按“年/月/日”输入,再设置为日期格式。
  • 不要在排期表中合并单元格,也不要把日期列预先设成文本格式;否则向下填充和筛选都可能出现异常。
  • 修改调休表后若状态没有立即更新,可按 F9 重新计算。旧版 WPS 若没有 WORKDAY 或筛选功能,建议升级到桌面版。

小结

先用 WORKDAY 快速得到一版只跳过周末的日期,再用调休表记录“哪些周末要上班”和“哪些日期要放假”,通过完整日期复核表统一判断状态,最后筛选得到最终清单。这样既保留普通周一至周五,也能正确补入调休上班日,并排除法定假日。

常见问题

WORKDAY 会自动避开中国法定节假日和调休上班日吗?

不会。加入第三个参数后可以扣除指定假期,但它仍按固定周末规则计算,也不会自动把某个周末改成工作日。存在调休安排时,应使用例外表和复核表统一处理。

为什么公式结果只显示数字或出现 #####?

只显示数字通常是没有设置日期格式,可右键选择“设置单元格格式→日期”;出现 ##### 表示列宽不足,拖宽日期列即可。

调休上班的周六、周日怎样加入最终清单?

把该日期录入“调休表”的“调休上班日期”列,在复核表中的状态会显示“调休上班”,最后筛选“工作日”和“调休上班”并复制日期即可。

参考来源