이번 글에서는 두 날짜 사이의 근무 시간을 계산하는 방법을 살펴보겠습니다. 이 정보는 직원 업무의 효율성을 분석하고 성과급 시스템의 경우 소요되는 유용한 시간을 계산하는 데 필요할 수 있습니다.
따라서 근무 시간을 계산하는 데 도움이 되는 자체 함수를 작성하고 WORKHOURS이라고 부르겠습니다.
메뉴 열기 서비스 - 매크로 - 편집기 Visual Basic , 새 모듈을 삽입 (메뉴
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(시작일; 종료일)