如何在 Excel 中快速生成工作日(营业日)列表?
本教程将教您如何在 Excel 中快速生成指定日期范围内的工作日(或营业日)列表。此类列表在项目排期、工时统计、考勤记录,以及仅需在工作日执行的任务规划中尤为实用。以下方法涵盖手动与自动两种操作方式,适用于不同使用场景及 Excel 熟练程度的用户。
使用便捷工具——Kutools for Excel 列出工作日
使用 Excel WORKDAY/WORKDAY.INTL 公式列出营业日
使用自动填充选项列出工作日
在 Excel 中,您可以结合自动填充柄与仅填充工作日选项,快速创建工作日列表。此方法简单直接,适合快速生成连续的工作日序列,但若需精确控制起止日期或考虑节假日,则灵活性较低。
1. 在空白单元格中输入您的开始日期。例如,在单元格 A1 中键入 7/1/2015. 参见截图:

2. 将鼠标移至单元格右下角,待填充柄(+)出现后,单击并向下拖动至所需行数,例如拖动以生成 22 个工作日的列表。
提示:您需要估算或精确计算要填充的工作日数量。如果不确定,可先填充比所需更多的单元格,再轻松删除多余部分即可。

3. 拖动完成后,单击选择区域附近出现的小型自动填充选项按钮,在弹出菜单中选择仅填充工作日。Excel 将仅用工作日(周一至周五)填充该区域,并跳过周末。

现在,您应该会在工作表中看到从 2015 年 7 月 1 日起的连续 22 个工作日序列。

此方法可快速生成连续的工作日列表,但无法满足自定义业务规则(例如排除特定节假日或处理非连续的工作日间隔)。此外,它也不能直接填充两个指定日期之间的工作日。如需更强大的功能,请考虑采用以下自动化方案之一。
使用便捷工具——Kutools for Excel 列出工作日
Kutools for Excel 的插入随机数据工具提供了一种便捷方案,可在指定日期范围内生成所有工作日或营业日。此方法灵活高效,尤其适用于处理大型数据集,或确保生成的日期均为唯一且按工作日状态筛选——非常适合依赖精确营业日计算进行排程或项目规划的用户!
1. 请选择用于生成列表的空白单元格区域,并确保所选单元格数量多于预期的工作日数量——因为单元格数量直接决定了可容纳的日期数量。参见截图:

2. 转到 Excel 功能区上的 Kutools 选项卡,然后单击插入> 插入随机数据。参见截图:
3. 在插入随机数据对话框中,切换到日期选项卡。在从框中输入最早日期,在到框中输入最晚日期,设定所需日期范围。勾选工作日即可将结果限定为工作日(周一至周五),勾选唯一值则可避免重复日期。参见截图:
注意:如果项目需包含节假日,请在生成列表后手动删除,因为内置功能仅跳过常规周末。
4. 单击确定或应用,该工具将在您选定的区域中填入指定期间内所有匹配的工作日。若所选区域大于可能的结果日期数量,则可能会保留空白单元格。

5。(可选)若要将生成的日期按时间顺序排列,请先选中已填充的日期范围,转到数据选项卡,然后单击从旧到新排序,即可让列表井然有序。

生成的列表现在将按从早到晚的顺序,展示您自定义时间范围内的所有营业日。

Kutools for Excel 的插入随机数据工具不仅支持生成工作日,还可轻松创建随机数、随机时间、随机唯一值、随机字符串及自定义列表。单击此处了解此工具的更多信息。
注意:请务必仔细核对生成的日期是否符合您的需求,尤其是在需排除特定节假日,或日期范围涉及可变工作周的情况下。
Kutools for Excel——包含 300 多个 Excel 必备工具,并永久免费畅享 AI 功能!立即下载!
使用 Excel WORKDAY/WORKDAY.INTL 公式列出营业日
Excel 的 WORKDAY 和 WORKDAY.INTL 函数可让您以编程方式生成两个日期之间的连续工作日列表。WORKDAY 默认跳过周末(周六和周日),而 WORKDAY.INTL 则支持自定义周末设置并纳入节假日,灵活应对各类需求。该方法高度灵活,特别适用于需要自动化流程并确保精准性的场景,如人力资源排班或薪资计算,助您大幅提升效率!
为便于操作,以下是使用公式构建动态营业日列表的分步方法:
1. 例如,在单元格 A1 中输入起始日期:7/1/2015;在单元格 B1 中输入结束日期,例如 7/31/2015.
2. 在单元格 C1 中输入以下公式,即可按顺序获取营业日列表:
=IF(WORKDAY($A$1,ROW(A1)-1,$B$2)<=$B$1,WORKDAY($A$1,ROW(A1)-1,$B$2),"") 参数说明:
- $A$1: 开始日期(绝对引用)
- ROW(A1)-1: 为每一行递增工作日编号
- $B$2: 可选,包含需排除的节假日日期的区域(在 B2:B10 或其他所需区域中输入您的节假日日期,如不需要可留空)
- $B$1: 结束日期的列表(确保序列在您选择的终点处停止)
3. 向下拖动单元格 C1 中的公式,直至单元格显示为空,列表将自动填充所有营业日(排除周末及所列节假日)。
提示:
- 如需自定义周末(例如仅将周日设为周末),请使用 WORKDAY.INTL 函数——通过设置 weekend 参数,即可灵活指定周末日期(详见 Excel 官方文档)。
- 请务必将您的节假日日期保存在清晰且独立的区域中,以免意外混入工作日序列。
- 如果无需考虑节假日,可在公式中省略可选的节假日区域。
常见错误:若在应显示日期的位置出现 #NUM! 错误或空白结果,请检查起始日期与结束日期是否有效,并确认所用的节假日列表(如有)仅包含日期,不含文本或其他数据。
使用 VBA 代码自动列出工作日/营业日
如果您需要在任意范围内生成完整的周工作日(周一至周五)或自定义工作日列表,借助 VBA 宏即可自动完成这一过程。此方法特别适合高级 Excel 用户,或在不同数据集上频繁重复执行该任务的场景。通过 VBA,您还能灵活纳入自定义的工作周安排、节假日排除规则,并将结果精准输出到工作表中的任意位置。
1. 单击开发工具 > Visual Basic,打开 Microsoft Visual Basic for Applications 窗口;随后,单击插入 > 模块,并将以下代码粘贴到该模块中:
Sub ListBusinessDays()
Dim StartDate As Date
Dim EndDate As Date
Dim r As Integer
Dim ws As Worksheet
Dim currDate As Date
Dim Holidays As Range
On Error Resume Next
Set ws = ActiveSheet
StartDate = Application.InputBox("Enter start date:", "KutoolsforExcel", Type:=2)
EndDate = Application.InputBox("Enter end date:", "KutoolsforExcel", Type:=2)
Set Holidays = Application.InputBox("Select range for holidays (optional, press Cancel if none):", "KutoolsforExcel", Type:=8)
On Error GoTo 0
r = 1
For currDate = StartDate To EndDate
If Weekday(currDate, vbMonday) <= 5 Then ' Monday = 1, Friday = 5
If Holidays Is Nothing Then
ws.Cells(r, 3).Value = currDate
r = r + 1
Else
If Application.CountIf(Holidays, currDate) = 0 Then
ws.Cells(r, 3).Value = currDate
r = r + 1
End If
End If
End If
Next
End Sub 2. 单击
按钮或按 F5 运行代码。系统将提示您输入列表的起始日期和结束日期。您还可选择一个包含节假日的日期范围以排除这些日期(如无需排除,只需单击“取消”即可)。宏随后将在活动工作表的 C 列中填充每个工作日,并自动跳过周末(周一至周五以外的日期)及您指定的节假日。
注意事项与故障排除:
- 如果日期未显示,请检查您输入的日期是否有效,并确认其格式是否为正确的日期格式。
- 若未指定节假日区域,系统将列出起始日期至结束日期之间的所有工作日。
- 结果始终从 C 列开始。如需在其他位置输出,请修改代码中的
ws.Cells(r,3)。
最佳办公效率工具
| 🤖 | KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行 | 生成代码| 创建自定义公式 | 数据分析及生成图表| 调用 Kutools Functions…… |
| 热门功能:查找、高亮或标记重复项 | 删除空白行 | 合并列或单元格且不丢失数据 | 不使用公式的四舍五入…… | |
| 高级 LOOKUP:多条件 VLookup | 多值 VLookup | 跨多工作表 VLookup | 模糊查找…… | |
| 高级下拉列表:快速创建下拉列表 | 级联下拉列表 | 多选下拉列表…… | |
| 列管理器:添加指定数量的列|移动列|切换隐藏列的可见性状态|比较区域与列…… | |
| 特色功能:网格聚焦 | 设计视图 |增强编辑栏 | 工作簿和表管理器 | 资源库(自动文本)| 日期提取 | 汇总工作表 | 加密/解密单元格 | 按列表发送邮件 | 超级筛选 | 特殊筛选(筛选粗体单元格/斜体/删除线……) ...... | |
| 精选 15 工具集:12 文本工具(添加文本,删除特定字符,……)| 50+ 图表 类型(甘特图,……)| 40+ 实用公式(基于生日计算年龄,……)| 19 插入工具(插入二维码,从路径插入图片,……)| 12 转换工具(小写金额转大写,汇率转换,……)| 7 合并和拆分工具(高级合并行,分割单元格,……)|……更多 |
使用 Kutools for Excel 大幅提升您的 Excel 技能,体验前所未有的高效。Kutools for Excel 提供 300 多项高级功能,助您提升生产力、节省时间。立即点击此处,获取您最需要的功能……
Office Tab 为 Office 带来标签式界面,让您的工作更轻松
- 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读。
- 在同一个窗口的新标签页中打开并创建多个文档,而非在新窗口中。
- 将您的工作效率提升 50%,每天减少数百次鼠标点击!
所有 Kutools 插件,一个安装程序
Kutools for Office 套件捆绑了适用于 Excel、Word、Outlook 和 PowerPoint 的插件以及 Office Tab Pro,非常适合需要跨多个 Office 应用高效协作的团队。
- 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
- 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
- 协同效果更佳— 在多个 Office 应用中实现高效协同
- 30 天全功能试用— 无需注册,无需信用卡
- 超值之选— 比单独购买插件更省钱