Calculando tempos de enfermaria dupla

Calculando tempos de enfermaria dupla

Minha esposa usa o Excel para controlar o horário de trabalho de sua equipe, mas tudo isso é trabalho manual. Existe uma maneira de permitir que o Excel calcule quando mais de duas pessoas trabalham no mesmo turno?

O complicado é que os turnos das pessoas começam em horários diferentes, mas às vezes se sobrepõem.

Os dados são os seguintes (há muito mais funcionários, mas isso mostra o layout geral):

insira a descrição da imagem aqui

Responder1

A ideia mais simples (também longe de qualquer otimização ou qualidade de código):

1) suponha que podemos ignorar o pequeno intervalo durante (por exemplo, 10h00-14h00, 14h15-18h00 é o mesmo que 10h00-18h00). Eu faço isso na variávelmudançatomando a primeira e a última vez em uma célula (e removendo os dois pontos).

2) crie uma matriz de "minutos" em um dia de 1 a 2.400 (para que quase metade da matriz não seja usada)

3) para cada “minuto” calcule quantas pessoas estavam trabalhando

Adicionamos 1 ao início do turno - desta forma não contamos sobreposições de limites (por exemplo, se "A" começar e "B" terminar às 12h, isso não será uma sobreposição)

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

Resultado para o seu exemplo

informação relacionada