如何在 Excel 中按月统计工作时间?
在许多组织中,员工通常遵循标准的工作时间安排,例如每天 8 小时、每周 5 天。准确计算每月总工作时间,对于薪资核算、项目跟踪和人员管理至关重要。然而,手动逐月统计工时不仅耗时,还容易出错——尤其是在需考虑周末、公共假日或员工排班不一致的情况下。Excel 提供了实用的工具与方法,助您轻松简化并自动化这一计算过程,确保运营的精准与高效。
以下是几种在 Excel 中计算每月工作时间的有效解决方案,适用于不同的数据结构和需求:
使用公式计算每月总工作时间
当您已知起始日期与结束日期,并设定了每日工作小时配额时,Excel 的公式函数提供了一种直接而可靠的方式来计算每月总工作时间。该方法特别适用于每日工作时间固定的情形,不仅能自动排除周末,还可选择性地排除节假日。设置步骤如下:
1. 选择一个空白单元格用于显示结果,并输入以下公式:
=NETWORKDAYS(A2,B2) *8 输入公式后,按下 Enter 键,结果可能最初以日期格式显示。下图展示了此情况:

2. 要将结果显示为数字(工作时间),请先选中包含公式结果的单元格,然后在“开始”选项卡中,找到“数字格式”下拉菜单,选择“常规”。此时,单元格将以纯数字形式显示总工作时间,如下图所示:

提示:若需准确反映包含节假日的时段,可通过在公式中添加节假日范围来排除这些日期。请使用以下公式:
=NETWORKDAYS(A2,B2, C2:C4) *8 其中 A2 为开始日期,B2 为结束日期,C2:C4 则列出了您希望排除的节假日日期。请按上述方法将单元格格式设置为“常规”。

注意:请根据您的数据位置调整单元格引用(如 A2、B2、C2:C4)。此方法最适合标准的每日工作时间安排。若员工为兼职,或每日工作时间不固定,则可能需要调整公式,或采用以下任一替代方法。
使用公式的一大优势在于,一旦设置完成,当您调整日期或节假日时,结果将自动更新。然而,对于包含多名员工或更复杂考勤记录的数据集,以下高级解决方案或许更为便捷。
VBA 代码 – 自动为多行计算每月工作时间
如果您的工作表包含多名员工或多行数据,且每行对应不同的周期或起止日期,逐行手动输入公式将极为繁琐。借助 VBA 宏,即可批量自动计算每行的工作时间,大幅节省时间并有效减少人为错误。
当您的表格中每行代表一名员工或一个独立的工作周期,并包含开始日期和结束日期列(可选节假日列)时,此解决方案尤为实用。以下宏将遍历所有行,为每个条目自动填入计算得出的工作时间。
1. 单击“开发工具”>“Visual Basic”,打开 “Visual Basic for Applications”编辑器。在新窗口中,单击“插入”>“模块”,并将以下 VBA 代码粘贴到代码区域中:
Sub CalculateMonthlyWorkingHours()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim startCol As String, endCol As String, holidayCol As String, resultCol As String
Dim holidays As Variant
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set ws = Application.ActiveSheet
' Adjust these column letters as needed
startCol = "A" ' Start Date in Column A
endCol = "B" ' End Date in Column B
holidayCol = "C" ' Holiday list in Column C (optional; can be blank)
resultCol = "D" ' Results in Column D
lastRow = ws.Cells(ws.Rows.Count, startCol).End(xlUp).Row
For i = 2 To lastRow
If ws.Cells(i, startCol).Value <> "" And ws.Cells(i, endCol).Value <> "" Then
If ws.Cells(i, holidayCol).Value <> "" Then
holidays = Split(ws.Cells(i, holidayCol), ",")
ws.Cells(i, resultCol).Value = WorksheetFunction.NetworkDays(ws.Cells(i, startCol), ws.Cells(i, endCol), holidays) * 8
Else
ws.Cells(i, resultCol).Value = WorksheetFunction.NetworkDays(ws.Cells(i, startCol), ws.Cells(i, endCol)) * 8
End If
Else
ws.Cells(i, resultCol).Value = ""
End If
Next i
End Sub 注意事项与说明:
- 根据需要调整列字母(startCol、endCol、holidayCol、resultCol),以匹配您的工作表布局。
- holidayCol 列应包含以逗号分隔的日期,例如 7/3/2025 、7/18/2025;若无需填写,可留空。
- 此宏假定数据从第 2 行开始(即标题行之后)。
2. 要运行宏,请单击
按钮,或在选中模块时按 F5 键。代码将自动计算所有行的每月总工作时间,并填入结果列。如遇错误,请检查数据引用和日期格式是否正确。
此方法特别适用于在大型员工名册或多行工时表数据中自动执行计算,确保结果一致,并有效降低遗漏记录的风险。若您的数据结构更为灵活,或希望汇总每日考勤日志,请考虑使用下文介绍的数据透视表。
最佳办公效率工具
| 🤖 | 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 天全功能试用— 无需注册,无需信用卡
- 超值之选— 比单独购买插件更省钱