KutoolsforOffice — 一套方案,五大工具。事半功倍。

如何在 Excel 中快速生成工作日(营业日)列表?

作者修改日期

本教程将教您如何在 Excel 中快速生成指定日期范围内的工作日(或营业日)列表。此类列表在项目排期、工时统计、考勤记录,以及仅需在工作日执行的任务规划中尤为实用。以下方法涵盖手动与自动两种操作方式,适用于不同使用场景及 Excel 熟练程度的用户。

使用自动填充选项列出工作日

使用便捷工具——Kutools for Excel 列出工作日

使用 Excel WORKDAY/WORKDAY.INTL 公式列出营业日

使用 VBA 代码自动列出工作日/营业日


蓝色右向箭头气泡使用自动填充选项列出工作日

在 Excel 中,您可以结合自动填充柄与仅填充工作日选项,快速创建工作日列表。此方法简单直接,适合快速生成连续的工作日序列,但若需精确控制起止日期或考虑节假日,则灵活性较低。

1. 在空白单元格中输入您的开始日期。例如,在单元格 A1 中键入 7/1/2015. 参见截图:

Excel 中输入起始日期以创建工作日列表的截图

2. 将鼠标移至单元格右下角,待填充柄(+)出现后,单击并向下拖动至所需行数,例如拖动以生成 22 个工作日的列表。

提示:您需要估算或精确计算要填充的工作日数量。如果不确定,可先填充比所需更多的单元格,再轻松删除多余部分即可。

在 Excel 中拖动填充柄以列出日期的截图

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

Excel 中包含“填充工作日”选项的自动填充选项菜单截图

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

仅生成工作日列表的截图

此方法可快速生成连续的工作日列表,但无法满足自定义业务规则(例如排除特定节假日或处理非连续的工作日间隔)。此外,它也不能直接填充两个指定日期之间的工作日。如需更强大的功能,请考虑采用以下自动化方案之一。


蓝色右向箭头气泡 使用便捷工具——Kutools for Excel 列出工作日

Kutools for Excel插入随机数据工具提供了一种便捷方案,可在指定日期范围内生成所有工作日或营业日。此方法灵活高效,尤其适用于处理大型数据集,或确保生成的日期均为唯一且按工作日状态筛选——非常适合依赖精确营业日计算进行排程或项目规划的用户!

Kutools for Excel 提供 300 多项高级功能,简化复杂任务,提升创造力与效率。集成 AI 能力,Kutools 精准自动化任务,让数据管理变得轻松自如。Kutools for Excel 的详细信息……         免费试用……

1. 请选择用于生成列表的空白单元格区域,并确保所选单元格数量多于预期的工作日数量——因为单元格数量直接决定了可容纳的日期数量。参见截图:

使用 Kutools 创建工作日列表时所选单元格的截图

2. 转到 Excel 功能区上的 Kutools 选项卡,然后单击插入> 插入随机数据。参见截图:

3. 在插入随机数据对话框中,切换到日期选项卡。在框中输入最早日期,在框中输入最晚日期,设定所需日期范围。勾选工作日即可将结果限定为工作日(周一至周五),勾选唯一值则可避免重复日期。参见截图:
“插入随机数据”对话框中已选择“工作日”选项的截图

注意:如果项目需包含节假日,请在生成列表后手动删除,因为内置功能仅跳过常规周末。

4. 单击确定应用,该工具将在您选定的区域中填入指定期间内所有匹配的工作日。若所选区域大于可能的结果日期数量,则可能会保留空白单元格。

使用 Kutools 插入工作日列表并保留空白单元格的截图

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

Excel 中“数据”选项卡及“从旧到新排序”选项的截图

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

Excel 中工作日按从旧到新排序的截图

Kutools for Excel 的插入随机数据工具不仅支持生成工作日,还可轻松创建随机数、随机时间、随机唯一值、随机字符串及自定义列表。单击此处了解此工具的更多信息。

注意:请务必仔细核对生成的日期是否符合您的需求,尤其是在需排除特定节假日,或日期范围涉及可变工作周的情况下。

Kutools for Excel——包含 300 多个 Excel 必备工具,并永久免费畅享 AI 功能!立即下载!

蓝色右向箭头气泡 使用 Excel WORKDAY/WORKDAY.INTL 公式列出营业日

Excel 的 WORKDAYWORKDAY.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 – 支持英语、西班牙语、德语、法语、中文及 40+ 种其他语言!

使用 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 应用高效协作的团队。

ExcelWordOutlookTabsPowerPoint
  • 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
  • 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
  • 协同效果更佳— 在多个 Office 应用中实现高效协同
  • 30 天全功能试用— 无需注册,无需信用卡
  • 超值之选— 比单独购买插件更省钱