Добрый день. Прошу помощи в написании макроса.Есть таблица с полями:
Дата время события - в течение дня входов-выходов может быть много.
Подъезд - не используется
Событие - имеет два значения: "Разрешен вход" и "Разрешен выход"
Турникет - не используется
Кем вызвано - состоит из имени сотрудниками через / название отдела
Задача такая:
1. Создать листы на каждого сотрудника с именем листа взятым из поля Кем вызвано, но без отдела... типа (ЛЕВСИМВ(поле; (ПОИСК("/";поле)-1)
2. В каждый лист для сотрудника создать 4 поля - Дата, Вход, Выход, Отработано часов. Соответственно разбить поле Дата время из исходной таблицы, вытащить дату и время и распихать по полям Дата, Вход и выход. Проблема в том, что в исходной таблице вход и выход находятся в разных строках и нужно принимать решение был ли это вход или выход, из поля Событие. При этом в течение дня брать только 1е время и последнее... (все, что привходило внутри дня - мусор. Нужен только приход и уход) 1е время Всегда имеет значение Разрешен вход, а вот последнее бывает отличным от Разрешен выход (например человек с кем-то вышел, не приложив карту). Т.е., я так понимаю, логика такая - группировка строк по дате и дальше берем первую строку из группы из нее время вставляем дату Дата, время в поле Вход и последнюю строку из группы - проверяем значение в поле Событие, если оно = Разрешен выход, то писать время в поле Выход, а если нет, то ничего не вставлять, чтобы в поле выход было пусто.
3. Считать разницу между Вход и Выход. Если время меньше 8 часов, отмечать запись красным цветом.
Нашел макрос для группировки всех имен в одну групповую ячейку и еще один макрос, который создает листы с именем из этой ячейки и копирует часть исходной таблицы, принадлежащей этой групповой ячейке, в созданный лист. Забрать дату и время входа не проблема, посчитать разницу и подкрасить вроде тоже... но как все это соединить в один макрос и как забирать время выхода я не догоняю ((
приложил исходную таблицу и ручками в ней сделал для одного человека результат в новом листе.
Дата время события - в течение дня входов-выходов может быть много.
Подъезд - не используется
Событие - имеет два значения: "Разрешен вход" и "Разрешен выход"
Турникет - не используется
Кем вызвано - состоит из имени сотрудниками через / название отдела
Задача такая:
1. Создать листы на каждого сотрудника с именем листа взятым из поля Кем вызвано, но без отдела... типа (ЛЕВСИМВ(поле; (ПОИСК("/";поле)-1)
2. В каждый лист для сотрудника создать 4 поля - Дата, Вход, Выход, Отработано часов. Соответственно разбить поле Дата время из исходной таблицы, вытащить дату и время и распихать по полям Дата, Вход и выход. Проблема в том, что в исходной таблице вход и выход находятся в разных строках и нужно принимать решение был ли это вход или выход, из поля Событие. При этом в течение дня брать только 1е время и последнее... (все, что привходило внутри дня - мусор. Нужен только приход и уход) 1е время Всегда имеет значение Разрешен вход, а вот последнее бывает отличным от Разрешен выход (например человек с кем-то вышел, не приложив карту). Т.е., я так понимаю, логика такая - группировка строк по дате и дальше берем первую строку из группы из нее время вставляем дату Дата, время в поле Вход и последнюю строку из группы - проверяем значение в поле Событие, если оно = Разрешен выход, то писать время в поле Выход, а если нет, то ничего не вставлять, чтобы в поле выход было пусто.
3. Считать разницу между Вход и Выход. Если время меньше 8 часов, отмечать запись красным цветом.
Нашел макрос для группировки всех имен в одну групповую ячейку и еще один макрос, который создает листы с именем из этой ячейки и копирует часть исходной таблицы, принадлежащей этой групповой ячейке, в созданный лист. Забрать дату и время входа не проблема, посчитать разницу и подкрасить вроде тоже... но как все это соединить в один макрос и как забирать время выхода я не догоняю ((
приложил исходную таблицу и ручками в ней сделал для одного человека результат в новом листе.