none
计算工作时间差,扣除非工作时间 RRS feed

  • 常规讨论

  • 在Excel当中编辑一个自定义函数,用来计算工作时段的时间差,精确到秒。
    我自己做出来的,共享一下。


    1. 周一到周五的8:30-12:00 , 13:00-17:30为工作时间,其他时间为非工作时间
    2. 周六、周日为非工作时间

    
    Public Function WorkTimeDiff(Startime As Date, Endtime As Date) As Long
    
    
    Dim i As Long
    Dim Temptime    As Date
    Dim Temps As Long
    Dim TimeV As Double
    
    Temps = DateDiff("s", Startime, Endtime)
    
    For i = 1 To Temps
    
    Temptime = DateAdd("s", i, Startime)
    
    Select Case Format(Temptime, "w")
    Case 2, 3, 4, 5, 6
    
        TimeV = (CDbl(Temptime) - Fix(CDbl(Temptime))) * 48
        
        If (TimeV > 17 And TimeV < 24) Or (TimeV > 26 And TimeV < 35) Then
        
        WorkTimeDiff = WorkTimeDiff + 1
        End If
        
    End Select
    
    
    Next
    
    End Function
    

     

    2011年12月15日 15:03

全部回复

  • 我发现精度为秒,性能太差了。
    改成分钟精度比较合适

     

    
        Public Function WorkTimeDiff(Startime As Date, Endtime As Date) As Long
         On Error GoTo Err:
        Dim i As Long
        Dim Temptime    As Date
        Dim Temps As Long
        Dim TimeV As Double
        Temps = DateDiff("n", Startime, Endtime)
        For i = 1 To Temps
        Temptime = DateAdd("n", i, Startime)
        Select Case Format(Temptime, "w")
        Case 2, 3, 4, 5, 6
            TimeV = (CDbl(Temptime) - Fix(CDbl(Temptime))) * 48
            
            If (TimeV >= 17 And TimeV <= 24) Or (TimeV >= 26 And TimeV <= 35) Then
            
            WorkTimeDiff = WorkTimeDiff + 1
            End If
            
        End Select
        Next
        Err:
            Exit Function
        End Function 
    2011年12月16日 4:37
  • 您好,

    非常感谢分享您的经验。:)

     

    Best regards

    William Zhou 

     

    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    Description: Description: TechNet 论坛好帮手立刻免费下载  TechNet 论坛好帮手

    2011年12月16日 7:57
    版主