Microsoft Lab
全部软件
Excel日期与时间(Date and Time)约 4 分钟

Weekdays 统计工作日数量

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


完整代码

Dim date1 As Date, date2 As Date, dateToCheck As Date
Dim daysBetween As Integer, weekdays As Integer, i As Integer

weekdays = 0
date1 = Range("B2")
date2 = Range("B3")
daysBetween = DateDiff("d", date1, date2)

For i = 0 To daysBetween
    dateToCheck = DateAdd("d", i, date1)

    If (Weekday(dateToCheck) <> 1 And Weekday(dateToCheck) <> 7) Then
        weekdays = weekdays + 1
    End If
Next i

MsgBox weekdays & " weekdays between these two dates"

逻辑说明

  • 先用 DateDiff("d", date1, date2) 算出两个日期之间总共差几天
  • 用循环从 0 跑到这个天数,每一轮用 DateAdd("d", i, date1) 算出「起始日期 + i 天」是哪一天
  • Weekday(dateToCheck) 返回这天是星期几,1 代表星期日,7 代表星期六
  • 只有「既不是星期日、也不是星期六」的日子,才把 weekdays 计数加 1

学完你会

常见错误

  • 忘记 Weekday 函数默认返回 1 = 星期日、7 = 星期六,判断条件写反或漏了一个
  • 循环范围写成 1 To daysBetween 而不是 0 To daysBetween,少算了起始那一天
  • date1/date2 直接从 Range 读取时,如果单元格格式不是日期,会读到错误的值

Sources

Blog / Website:

  1. Weekdays
只记在你的浏览器里,换设备不会同步。