写了个自定义weeknumo(类似于weeknum,但修正了一些不足,对照outlook可以检查)的代码,分享下 Function WeekNumo(Dt As Date) As Integer Dim Fd As Date Dim LEd As Date Dim Wd As Byte Dim Yr As Integer Yr = Year(Dt) Fd = DateSerial(Yr, 1, 1) LEd = DateSerial(Yr, 1, 0) With Application Wd = IIf((Fd - 1) Mod 7, (Fd - 1) Mod 7, 7) If Wd <= 4 Then WeekNumo = .RoundUp(((Dt - Fd + Wd)) / 7, 0) Else WeekNumo = .RoundUp(((Dt - Fd + Wd)) / 7, 0) - 1 If WeekNumo = 0 Then WeekNumo = WeekNumo(LEd) End If End With End Function 不知道是否可以精简,或者有没有错误请大家指正 遵循规则,一年的第一天如果小于等于周四,算是第一周,否则算下一周为第一周,而此周属于上一年最后一周. |