跳至主要内容

Kutools for Office — 一套工具,五种功能。事半功倍。

如何在Excel中创建工作日/工作日列表?

Author Sun Last modified

本教程解释了如何在Excel中快速创建指定日期范围内的工作日或工作日列表。能够生成这样的列表对于项目调度、工时表、考勤日志或仅在工作日进行的任务规划特别有用。以下方法展示了手动和自动完成此操作的方式,适用于不同的场景和Excel熟练程度。

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

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

使用Excel WORKDAY/WORKDAY.INTL公式列出工作日

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


arrow blue right bubble 使用自动填充选项列出工作日

在Excel中,您可以使用自动填充手柄结合“填充工作日”选项快速创建工作日列表。这种方法简单直接,非常适合快速创建工作日的连续列表,但如果需要对开始和结束日期进行精确控制或需要考虑假期,则灵活性较差。

1. 在一个空单元格中输入起始日期。例如,在单元格A1中输入2015年7月1日。参见截图:

A screenshot showing the start date entered in Excel to create a list of weekdays

2. 将鼠标移动到单元格的右下角,直到看到填充手柄(+)。然后,单击并向下拖动填充手柄到所需的行数。例如,拖动以列出22个工作日。

提示:您需要估算或准确计算要填充的工作日数量。如果不确定,可以始终填充比需要更多的单元格,并轻松删除多余的单元格。

A screenshot of dragging the fill handle in Excel to list dates

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

A screenshot of the Auto Fill Options menu in Excel with the Fill Weekdays option

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

A screenshot of a list of weekdays only generated

此方法提供了一种快速填充连续工作日列表的方式,但不适合自定义业务规则(如排除特定假期或非连续工作日间隔)。此外,它无法直接填充两个确切日期之间的所有工作日。对于更高级的需求,请考虑使用下面的自动化方法之一。


arrow blue right bubble 使用便捷工具列出工作日 -- Kutools for Excel

Kutools for Excel 提供了一个便捷的解决方案,通过其“插入随机数据”功能生成特定日期范围内的所有工作日或工作日。这种方法灵活且省时,特别是在处理大数据集时,或当您希望确保所有返回的日期都是唯一的并且按工作日状态过滤时。它非常适合管理依赖精确工作日计算的日程安排或计划项目的用户。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

1. 选择要生成列表的空白单元格范围。请确保选择的单元格数量多于预期的工作日数量,因为单元格数量决定了能容纳多少日期。参见截图:

A screenshot of selected cells for creating a weekday list with Kutools

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

3. 在 插入随机数据 对话框中,切换到 日期 选项卡。输入您期望的日期范围:在 框中输入最早的日期,在 框中输入最晚的日期。勾选 工作日 以限制结果为工作日(周一至周五),并勾选 唯一值 以避免任何重复日期。参见截图:
A screenshot of the Insert Random Data dialog with Workday option selected

注意:如果您的项目要求包括假期,则需要在生成列表后手动移除它们,因为内置函数只跳过典型的周末。

4. 单击“确定”或“应用”。该工具将在您选择的范围内填充指定时间段内所有匹配的工作日。如果所选范围大于可能的结果日期,可能会有空白单元格剩余。

A screenshot showing a list of weekdays inserted with blank cells remaining

5. (可选)为了按时间顺序排列生成的日期,选择填充的日期范围,转到“数据”选项卡,然后单击“从旧到新排序”。这一步确保您的列表组织良好。

A screenshot showing Data tab and Sort Oldest to Newest option in Excel

生成的列表现在将显示自定义范围内的所有工作日,按从最早到最晚的顺序排列。

A screenshot showing weekdays sorted from oldest to newest in Excel

Kutools for Excel 的“插入随机数据”工具不仅支持工作日:您还可以生成随机数字、随机时间、随机唯一值、随机字符串和随机自定义列表。点击这里了解更多关于该工具的信息。

注意:始终仔细检查生成的日期是否符合您的标准,特别是如果您需要排除特定假期或您的日期范围覆盖可变工作周。

Kutools for Excel - 包含超过 300 个 Excel 必备工具。永久免费享受 AI 功能!立即下载!

arrow blue right bubble 使用Excel WORKDAY/WORKDAY.INTL公式列出工作日

Excel的WORKDAYWORKDAY.INTL函数允许您编程生成两个日期之间的工作日列表。WORKDAY默认跳过周末(周六和周日),而WORKDAY.INTL允许您指定自定义周末天数并包含假日日期。这种方法高度适应性,如果您想自动化流程并确保精确性,例如HR调度或薪资计算。

为了方便起见,以下是使用公式构建动态工作日列表的分步方法:

1. 在单元格A1中输入开始日期,例如:2015年7月1日。在单元格B1中输入结束日期,例如2015年7月31日

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函数,该函数允许通过提供周末参数来指定哪些天是周末(详情请参阅Excel文档)。
  • 始终确保您的假日日期保持在一个清晰、单独的范围内,以避免意外包含在您的工作日序列中。
  • 如果不考虑假日,可以在公式中省略可选的假日范围。

常见错误:如果您在期望日期的地方得到#NUM!或空白结果,请检查您的开始和结束日期是否有效,并且您的假日列表(如果使用)仅包含日期(而不是文本或其他数据)。

arrow blue right bubble 使用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。单击 Run button 按钮或按 F5 运行代码。系统会提示您输入列表的开始和结束日期。您可以选择要排除的假日日期范围(或者如果不需要,只需按取消)。然后,宏将在活动工作表的C列中填充每个工作日,跳过周末(周一至周五)和您指定的假日。

注意事项和故障排除:

  • 如果日期未显示,请检查您的输入日期是否有效并且是日期格式。
  • 如果没有指定假日范围,则列出开始和结束日期之间的所有工作日。
  • 结果始终从C列开始。如果希望输出到其他地方,请调整代码中的ws.Cells(r,3)

最佳Office办公效率工具

🤖 Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数……
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入……
高级LOOKUP多条件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中进行多标签编辑与阅读
  • 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
  • 可提升50%的工作效率,每天为您减少数百次鼠标点击!

所有Kutools加载项,一键安装

Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。

Excel Word Outlook Tabs PowerPoint
  • 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
  • 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
  • 协同更高效——提升Office应用间的整体工作效率
  • 30天全功能试用——无需注册,无需信用卡
  • 超高性价比——比单独购买更实惠