Страницы: 1
RSS
Учет отсутствия сотрудников на рабочем месте
 
Есть таблица с перечнем сотрудников и временем прихода и ухода.
Нужно чтобы в колонке рядом прописывалось сколько времени прошло между его приходом и временем последнего ухода (с учетом рабочего времени: с 9 до 18, и обедом с 13 до 14)
Буду благодарен за помощь. Пример прилепляю
 
Уточню - необходимо узнать разницу во времени между последним уходом и ПЕРВЫМ приходом?
п.с. вник вроде
Изменено: VideoAlex - 13.06.2017 20:42:59
 
VideoAlex, разница между последним приходом и предыдущим уходом
 
Пока без учета рабочего времени
П.С. честно говоря реализовать подсчет с учетом рабочего времени у меня скорее всего не хватит знаний
Код
Function sachki(s As Range, prih As Range) As Date
Name = s.Value
clmn = s.Column
For i = s.Row - 1 To 1 Step -1
    name2 = Cells(i, clmn).Value
    If name2 = Name Then
        sachki = Cells(s.Row, s.Column + 1).Value - Cells(i, s.Column + 2).Value
        Exit Function
    End If
Next i
sachki = 0
End Function
Изменено: VideoAlex - 13.06.2017 21:24:17
 
VideoAlex,спасибо за помощь)
Но без учета рабочего времени - прогул может составлять более 10 часов, при разрешенных 5-ти
 
Может более опытные формулисты сократят... В ячейку D3 вставить формулу:
Код
=ЕСЛИ(ЕОШИБКА(ПРОСМОТР(2;1/(A3=A$2:A2);C$2:C2));"";(СЧЁТ(1/(ЧАСТОТА(СТРОКА($780:$840);СТРОКА(ИНДЕКС(A:A;(ПРОСМОТР(2;1/(A3=A$2:A2);C$2:C2)-ОТБР(ПРОСМОТР(2;1/(A3=A$2:A2);C$2:C2)))*1440):ИНДЕКС(A:A;(B3-ОТБР(B3))*1440+(ДЕНЬ(ПРОСМОТР(2;1/(A3=A$2:A2);C$2:C2))<>ДЕНЬ(B3))*1440)))=0))-(ДЕНЬ(ПРОСМОТР(2;1/(A3=A$2:A2);C$2:C2))<>ДЕНЬ(B3))*900)/1440)

затем протянуть.

Изменено: kim - 13.06.2017 22:22:03
 
kim,спасибо работает. А где здесь задаются рамки рабочего дня и обеда?
 
Выражение СТРОКА($780:$840) это обед с 780-ой минуты от начала суток по 840-ую. Число 900 - это количество минут в период с 18:00 до 9:00 следующих суток, ну и число 1440 это общее количество минут в сутках.
P.S. Правда если сотрудник прогуляет более суток, формула не будет работать. Ну может кто-нибудь доделает, а я убежал...
Изменено: kim - 13.06.2017 22:31:21
 
kim, т.е. выходные формула не учитывает?
 
Сколько Иванов отсутствовал если к примеру он ушел 13.06.2017  18:23, а следующий раз пришел 20.06.2017  10:20? И еще сдается мне что он переработал, уйдя в 18:23, как с этим быть?
 
kim, переработка значения не имеет (не считается)
Допустим:
15.06 - это пятница.
Иванов ушел 15.06 в 17.00.
Иванов пришел 18.06 в 10.00.
Значит время прогула 2 часа (с 17 до 18 в пятницу и с 8 до 9 в понедельник)
 
Прошу помощи в данном вопросе
 
Дык Вы ж на вопрос не ответили...
Цитата
Сколько Иванов отсутствовал если к примеру он ушел 13.06.2017  18:23, а следующий раз пришел 20.06.2017  10:20?
 
kim, вот ответ мой:

Цитата
переработка значения не имеет (не считается)
Допустим:
15.06 - это пятница.
Иванов ушел 15.06 в 17.00.
Иванов пришел 18.06 в 10.00.
Значит время прогула 2 часа (с 17 до 18 в пятницу и с 8 до 9 в понедельник)
В данном случае:
Цитата
Сколько Иванов отсутствовал если к примеру он ушел 13.06.2017  18:23, а следующий раз пришел 20.06.2017  10:20?
13.06 не считаем, т.к. рабочий день окончен. Начинаем с 14.06:
17.06 и 18.06 выходные - они не учитываются.
Поэтому полных дней 14,15,16, 19 и 1 час 20 мин. 20.06
Получается 33 часа 20 мин
Изменено: Shain - 14.06.2017 23:04:02
 
Не согласен что это ответ на мой вопрос. Просто напишите число.
 
kim, добавил в свое сообщение выше
 
Возможно так подойдет...
 
Спасибо, вроде работает.
Только если дата и время ухода совпадает с датой прихода, то разница не 0, а 364 показывает
И еще считает как-то на 1-2 мин меньше обычно. Возможно округляет секунды само?
Изменено: Shain - 15.06.2017 20:40:46
 
еще есть одна проблема. Когда добавляешь штук сто строк, то ексель зависает сразу. Наверное из-за очень большой формулы
 
А макросом эту формулу никак нельзя реализовать?
 
Зависает из-за обработки огромных массивов, переделал, зависать вроде не должно.
Насчет одновременного ухода и прихода не понял. Ушел и в ту же секунду пришел?
Насчет отклонений в минуту всегда спорный вопрос как считать.
Смотрите, может подойдет... макросом уже заморачиваться не стал
 
kim,вот так не виснет.
Только еще вопрос. Цифры в формуле? 17:00, 8:00, 4:00, 18:00 за что отвечают?
 
17:00 - это константа - результат сокращенного арифметического действия 18:00 без 1 часа перерыва
8:00 - продолжительность рабочей смены в часах
4:00 - продолжительность половины рабочей смены, до обеда или после
18:00 - конец рабочей смены
 
Спасибо
Изменено: Shain - 19.06.2017 00:03:40
Страницы: 1
Наверх