Как распределить свободное время, когда в один и тот же день есть две строки данных - PullRequest
0 голосов
/ 06 марта 2019

Я работаю в контакт-центре, создавая инструменты Excel для многих областей.Один из них распределяет людей через все службы с учетом их рабочего времени и свободного времени.

У них есть 2 вида свободного времени, по одному каждый час в течение 5 минут, а другой - от 10 до 30 минут (в зависимости от того, какони работают много часов), которые не могут начаться до 2 первых часов или после последних полутора часов.

Получил код, работающий до сих пор, но затем они начали работать в 2 службах в один и тот же день,Мой предыдущий макрос разделяет одного и того же работника на 2 строки, по одному для каждого сервиса со своим schelude.Я не могу изменить это, потому что файл намного больше, чем эта часть, и от этого зависят несколько других функций.

, поэтому моя проблема в том, что мой код работает строка за строкой, и они даже не один за другим, поэтому первыйсвободное время будет работать нормально, но вычисление 2 первых часов, последнего часа и половины и общего рабочего времени завершится неудачей.

Часть кода, которая делает это здесь:

    For i = 2 To UBound(arrAgentes)
        If Not DictKPI.Exists(arrAgentes(i, 1) & arrAgentes(i, 3)) Or IsEmpty(DictKPI(arrAgentes(i, 1) & arrAgentes(i, 3))) Then GoTo Siguiente
        If arrAgentes(i, 6) = "Intensivo" Then
            If arrAgentes(i, 4) <> "BUCARAMANGA" Then Call RepartePVDIntensivo(i)
            If arrAgentes(i, 11) <> vbNullString Then Call ReparteDescansosIntensivo(i)
        ElseIf arrAgentes(i, 6) = "Partido" Then
            If arrAgentes(i, 4) <> "BUCARAMANGA" Then Call RepartePVDPartido(i)
            If arrAgentes(i, 11) <> vbNullString Or arrAgentes(i, 12) <> vbNullString Then Call ReparteDescansosPartido(i)
        End If
Siguiente:
    Next i

Он будет работать в зависимости от того, будет ли их схема без обеда, то есть с 8:00 до 16:00 или с обедом с 10:00 до 14:00 и с 15:00 до 19:00.

*1013* "Intensivo" означает нетВремя обеда "Партидо" означает время обеда.Мы также разделяем их по странам (действующие законы о свободном времени и все такое).

Может ли кто-нибудь помочь мне найти ключ к решению моей проблемы?Макрос будет запускаться строка за строкой, и, возможно, через 300 строк он найдет того же парня в тот же день, но в другой schelude, потому что у него есть 2 сервиса в тот день.

Вот так выглядит лист в началекод:

Sample data

У этого работника время работы с 15:30 до 00:00, но служба, в которой он работает во второй половине дня, закрывается в 2200, а затем переходит к другому.Макрос даст ему только 6,5 часа в первом ряду и 2 часа в последнем ряду ... его свободное время будет 20 и 0, но на самом деле он работает в течение 8,5 часов, что означает в общей сложности 30 минут.

Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...