Всем привет. Возможно, кто-то подскажет, ищу-ищу подобную тему, а найти не могу, так что не кидайтесь тапками, если что. Нужно сделать таблицу учёта рабочих часов на предприятии.
Дано по колонкам: - гггг.мм.дд чч.мм.сс - ID пользователя - пришел или ушел.
Нужно, чтобы таблица отбирала по ID определенного человека и подсчитывала разницу между датой.временем, когда он пришел и датой.временем, когда он ушел, отправляла это в колонку "за сутки", а потом подсчитывала "за месяц". Как сделать последние две операции я прекрасно представляю, а вот как сделать шаблон, в который вставляешь эти данные и таблица подсчитывает по определенному ID не пойму никак. Добавлю, что возможны суточные смены, то есть человек пришел в один день, а ушел на следующий. Уже неделю пытаюсь, а все никак не получается. Возможно, вообще не там ищу, вдруг у кого есть готовые решения - буду безгранично благодарна, а может хоть на путь истинный натолкнете.
Кидаю очень короткий пример исходящих данных, рабочая таблица будет за месяц и с намного большим количеством работников, но масштабировать не тяжело же, если понять принцип и формулу. Таблицу такого формата деалет система, которая не настраивается иначе. То есть отдельными рядками не буде
Всем привет. Возможно, кто-то подскажет, ищу-ищу подобную тему, а найти не могу, так что не кидайтесь тапками, если что. Нужно сделать таблицу учёта рабочих часов на предприятии.
Дано по колонкам: - гггг.мм.дд чч.мм.сс - ID пользователя - пришел или ушел.
Нужно, чтобы таблица отбирала по ID определенного человека и подсчитывала разницу между датой.временем, когда он пришел и датой.временем, когда он ушел, отправляла это в колонку "за сутки", а потом подсчитывала "за месяц". Как сделать последние две операции я прекрасно представляю, а вот как сделать шаблон, в который вставляешь эти данные и таблица подсчитывает по определенному ID не пойму никак. Добавлю, что возможны суточные смены, то есть человек пришел в один день, а ушел на следующий. Уже неделю пытаюсь, а все никак не получается. Возможно, вообще не там ищу, вдруг у кого есть готовые решения - буду безгранично благодарна, а может хоть на путь истинный натолкнете.
Кидаю очень короткий пример исходящих данных, рабочая таблица будет за месяц и с намного большим количеством работников, но масштабировать не тяжело же, если понять принцип и формулу. Таблицу такого формата деалет система, которая не настраивается иначе. То есть отдельными рядками не будеelvsh119
let from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], typ = Table.TransformColumnTypes(from,{"Время", type datetime}), add = Table.AddColumn(typ, "Дата", each DateTime.Date([Время]), type date), to = Table.Group(add, {"ID пользователя", "Дата"}, {"время", (t)=>[a=t[Время],b=List.Max(a)-List.Min(a),c=Duration.TotalHours(b)][c]}) in to
[/vba]
например, PQ: [vba]
Код
let from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], typ = Table.TransformColumnTypes(from,{"Время", type datetime}), add = Table.AddColumn(typ, "Дата", each DateTime.Date([Время]), type date), to = Table.Group(add, {"ID пользователя", "Дата"}, {"время", (t)=>[a=t[Время],b=List.Max(a)-List.Min(a),c=Duration.TotalHours(b)][c]}) in to
прохожий2019, огромное спасибо! :heart: Пытаюсь разобраться с Вашей формулой (не кидайтесь тапками, я в экселе новенькая). Если человек пришел и ушел в один день, все работает хорошо, а вот если это рабочий, у которого смена сутки (условно пришел в 9 часов пятницы, а ушел в 9 субботы), то она слетает, к сожалению
прохожий2019, огромное спасибо! :heart: Пытаюсь разобраться с Вашей формулой (не кидайтесь тапками, я в экселе новенькая). Если человек пришел и ушел в один день, все работает хорошо, а вот если это рабочий, у которого смена сутки (условно пришел в 9 часов пятницы, а ушел в 9 субботы), то она слетает, к сожалениюelvsh119
let from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], typ = Table.TransformColumnTypes(from,{"Время", type datetime}), to = Table.Group(typ, "ID пользователя", {{"дата",(t)=>Date.From(List.Min(t[Время]))}, {"время", (t)=>[a=t[Время],b=Duration.TotalHours(List.Max(a)-List.Min(a))][b]}}, GroupKind.Local) in to
let from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], typ = Table.TransformColumnTypes(from,{"Время", type datetime}), to = Table.Group(typ, "ID пользователя", {{"дата",(t)=>Date.From(List.Min(t[Время]))}, {"время", (t)=>[a=t[Время],b=Duration.TotalHours(List.Max(a)-List.Min(a))][b]}}, GroupKind.Local) in to
[/vba] допил под всякие "если" - самостоятельнопрохожий2019
Спасибо огромное! Вы такой молодец! Допиливать буду стараться сама, конечно, только вот не могу понять в каком формате нужно выставлять столбец "время", ведь как может 8,66 часов, например, это 9 часов и 6 минут или 8 часов и 0,66 от еще одного часа? Перевожу в временной формат - вообще ужас какой-то получается.(( https://snipboard.io/PT8tG4.jpg
Спасибо огромное! Вы такой молодец! Допиливать буду стараться сама, конечно, только вот не могу понять в каком формате нужно выставлять столбец "время", ведь как может 8,66 часов, например, это 9 часов и 6 минут или 8 часов и 0,66 от еще одного часа? Перевожу в временной формат - вообще ужас какой-то получается.(( https://snipboard.io/PT8tG4.jpgelvsh119