如何在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应包含用逗号分隔的日期,例如2025/7/3,2025/7/18。如果不需要,可以留空。
- 此宏假定数据从第2行开始(标题之后)。
2要运行宏,请点击 按钮或按 F5 当模块被选中时,代码将自动计算并填充结果列中所有行的总月工作小时数。如果遇到错误,请检查您的数据引用和日期格式是否正确。
此方法在跨大规模员工名单或多行工时表数据进行自动化计算时特别有效,确保一致性并减少遗漏记录的风险。如果您的数据结构更加灵活,或者您希望汇总每日考勤记录,请考虑使用如下所述的数据透视表。
最佳Office办公效率工具
🤖 | Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数…… |
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入…… | |
高级LOOKUP:多条件VLookup|多值VLookup|多表查找|模糊查找…… | |
高级下拉列表:快速创建下拉列表 |依赖下拉列表 | 多选下拉列表…… | |
列管理器: 添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列…… | |
特色功能:网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)…… | |
15大工具集:12项 文本工具(添加文本、删除特定字符等)|50+种 图表 类型(甘特图等)|40+实用 公式(基于生日计算年龄等)|19项 插入工具(插入二维码、从路径插入图片等)|12项 转换工具(小写金额转大写、汇率转换等)|7项 合并与分割工具(高级合并行、分割单元格等)| …… |
通过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和PowerPoint插件+Office Tab Pro
- 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
- 协同更高效——提升Office应用间的整体工作效率
- 30天全功能试用——无需注册,无需信用卡
- 超高性价比——比单独购买更实惠