이중 병동 시간 계산

이중 병동 시간 계산

제 아내는 팀의 근무시간을 관리하기 위해 엑셀을 사용하는데, 이는 모두 수작업입니다. 2명 이상이 같은 교대근무를 할 때 Excel에서 계산할 수 있는 방법이 있나요?

까다로운 점은 사람들의 교대가 서로 다른 시간에 시작되지만 때로는 겹치는 경우도 있다는 것입니다.

데이터는 다음과 같습니다(직원 수는 더 많지만 이는 일반적인 레이아웃을 보여줍니다).

여기에 이미지 설명을 입력하세요

답변1

가장 간단한 아이디어(최적화나 코드 품질과는 거리가 멀음):

1) 짧은 휴식 시간을 무시할 수 있다고 가정합니다(예: 10:00-14:00 14:15-18:00은 10:00-18:00과 동일). 나는 이것을 변수로한다옮기다셀의 첫 번째와 마지막 시간을 취하고 콜론을 제거합니다.

2) 1일부터 2400일까지의 "분" 배열을 만듭니다(그래서 배열의 거의 절반이 전혀 사용되지 않습니다).

3) 각 "분"마다 얼마나 많은 사람들이 일하고 있는지 계산합니다.

교대 시작에 1을 추가합니다. 이렇게 하면 경계 중복을 계산하지 않습니다(예: "A"가 시작하고 "B"가 12:00에 끝나는 경우 이는 중복이 아닙니다).

Function shiftOverlaps(r As Range) As Integer
    Dim shiftStart As Integer
    Dim shiftEnd As Integer
    Dim shift As String
    Dim wholeDay(1 To 2400) As Integer

    shiftOverlaps = 0        

    For Each c In r
        shift = Replace(Left(Trim(c.Value), 5) & " " & Right(Trim(c.Value), 5), ":", "")
        If shift <> " " Then
            shiftStart = Left(shift, 4) + 1
            shiftEnd = Right(shift, 4)
            For i = 1 To 2400
                If i >= shiftStart And i <= shiftEnd Then
                    wholeDay(i) = wholeDay(i) + 1
                    If wholeDay(i) > shiftOverlaps Then
                        shiftOverlaps = wholeDay(i)
                    End If
                End If
            Next i
        End If
    Next c

    shiftOverlaps = shiftOverlaps - 1

End Function

귀하의 예에 대한 결과

관련 정보