TOP

근무 시간

설명

이번 글에서는 두 날짜 사이의 근무 시간을 계산하는 방법을 살펴보겠습니다. 이 정보는 직원 업무의 효율성을 분석하고 성과급 시스템의 경우 소요되는 유용한 시간을 계산하는 데 필요할 수 있습니다.

따라서 근무 시간을 계산하는 데 도움이 되는 자체 함수를 작성하고 WORKHOURS이라고 부르겠습니다.

메뉴 열기 서비스 - 매크로 - 편집기 Visual Basic , 새 모듈을 삽입 (메뉴 Insert - Module) 거기에 이 함수의 텍스트를 복사합니다.

Function WORKHOURS(StartDate As Variant, EndDate As Variant)
    Application.Volatile
    StartDate = StartDate.Address
    EndDate   = EndDate.Address
    
    ' 첫날 근무시간 
    WORKHOURS1 = Evaluate("IF(AND(DAY(" & StartDate & ")=DAY(" & _
    EndDate & "),MONTH(" & StartDate & ")=MONTH(" & EndDate & "))," & EndDate & _
    "-" & StartDate & "-IF(AND(HOUR(" & StartDate & ")<=13,HOUR(" & EndDate & _
    ")>=14),1/24,0),18/24-MOD(" & StartDate & ",1)-IF(HOUR(" & StartDate & _
    ")<=13,1/24,0))")
    
    ' 중간요일 근무시간 
    WORKHOURS2 = Evaluate("MAX((IF(AND((WEEKDAY(" & EndDate & ",2))"&"<"&"(WEEKDAY(" & StartDate & _
    ",2)),((WEEKDAY(" & StartDate & ",2))-(WEEKDAY(" & EndDate & ",2)))>1),(((DATEDIF(" & StartDate & _
    "," & EndDate & "," & """D""" & ")+1))-(FLOOR((DATEDIF(" & StartDate & "," & EndDate & _
    "," & """D""" & ")+1)/7,1)*2)-2),(((DATEDIF(" & StartDate & "," & EndDate & "," & """D""" & ")+1))-(FLOOR((DATEDIF(" & _
    StartDate & "," & EndDate & "," & """D""" & ")+1)/7,1)*2)))-2),0)*8/24")
    
    ' 마지막날 근무시간 
    WORKHOURS3 = Evaluate("IF(AND(DAY(" & StartDate & _
    ")=DAY(" & EndDate & "),MONTH(" & StartDate & ")=MONTH(" & EndDate & ")),0,MOD(" & EndDate & _
    ",1)-9/24-IF(HOUR(" & EndDate & ")>=14,1/24,0))")
    
    WORKHOURS = WORKHOURS1 + WORKHOURS2 + WORKHOURS3
End Function

Visual Basic 편집기를 닫고 Excel로 돌아갑니다.

지금에 기능 마스터 카테고리에서 사용자 정의 WORKHOURS 함수를 찾아서 사용할 수 있습니다. 함수 구문 수행원:

 =WORKHOURS(시작일; 종료일)