• Tính ngày làm việc thực tế giữa khoảng thời gian
  • Tính ngày làm việc thực tế giữa khoảng thời gian

    Noname > 26-08-10, 08:31 PM

    Rất nhiều nhà quản lý kế hoạch ( planning) muốn tính ngày làm việc thực tế giữa hai khoảng thời gian.
    Dưới đây mình xin giới thiệu đoạn code tính ngày làm việc thực tế. Trừ thứ 7 và chủ nhật. Mời các bạn tham khảo.


    Mã:
    Function CalcWorkdays(StartDate, EndDate) As Integer
        Dim LTotalDays As Integer
        Dim LSaturdays As Integer
        Dim LSundays As Integer
        On Error GoTo Err_Execute
        CalcWorkdays = 0
        If IsDate(StartDate) And IsDate(EndDate) Then
            If EndDate <= StartDate Then
                CalcWorkdays = 0
            Else
                LTotalDays = DateDiff("d", StartDate - 1, EndDate)
                LSaturdays = DateDiff("ww", StartDate - 1, EndDate, 7)
                LSundays = DateDiff("ww", StartDate - 1, EndDate, 1)
                'Workdays is the elapsed days excluding Saturdays and Sundays
                CalcWorkdays = LTotalDays - LSaturdays - LSundays
            End If
        End If
        Exit Function
    Err_Execute:
        'If error occurs, return 0
        CalcWorkdays = 0
    End Function
    Chú ý:
    1/Nếu chúng ta làm luôn thứ bảy thì thay thế:
    Mã:
    CalcWorkdays = LTotalDays - LSaturdays - LSundays
    Thành:
    Mã:
    CalcWorkdays = LTotalDays -LSundays
    2/ Phạm vi hàm này không bao gồm ngày lễ. Lẽ ra mình có thể thiết kế tính luôn ngày lễ nếu như chúng ta không có nghỉ tết âm lịch và giỗ tổ Hùng Vương. Mình sẽ bổ sung nếu tìm thấy module chuyển ngày dương thành âm lịch!

    Thân mến!
  • RE: Tính ngày làm việc thực tế giữa khoảng thời gian

    Noname > 23-09-10, 10:58 AM

    Bổ sung demo.
    Nếu các bạn không down được , vui lòng vào link sau:
    https://sites.google.com/site/thuvienthu...ects=0&d=1