upd. Некорректно отрабатывает, если у последнего объекта одна дата и если эта дата уже попадает в какой-то другой объект( или несколько, но эти даты встречались ранее, т.к вижу, что пересечение дат возможно
Спасибо за помощь. Чтобы решить проблему в случае пересечения периодов вроде достаточно сделать начальную сортировку по Объекту, а потом по Дате.
Добрый день. Прошу помочь в решении обратной проблемы: На входе есть выгрузка типа "Объект" - "Дата". На выходе надо получить "Объект" - "Начало" - "Окончание" (непрерывные периоды по каждому объекту).
Проблема в том что на каждый объект может выпадать несколько периодов поэтому обычной группировкой собрать из фарша мясо у меня не получилось...
PooHkrd, спасибо за помощь! Почти подошло. Только если в первой ячейке будет одно имя, то на выходе будет получаться всегда один столбец (но тут я сам могу доработать)
Имеется: столбец с текстом (имена с разделителем "; "). Задача: разделить столбец на новые по указанному разделителю, но при этом имена должны быть отсортированы согласно таблицы "Порядок" (как должно получится видно по таблице "Результат").
Стандартным мышка-клацательным способом не получается - нет сортировки (дальнейшие попытки собрать полученные столбцы в лист и отсортировать - не увенчались успехом). List.Generate и List.Accumulate мой гладкий мозг осилить не может...
P.S. если это важно: в реальных данных от 1 до 5 имен в ячейке, таблица "Порядок" около 30 имён.
При объединении двух запросов (ФАКТ и ПЛАН в файле) получается новый столбец [План] с вложенными таблицами. Мне необходимо отфильтровать получившиеся вложенные таблицы по критериям указанным в таблице ФАКТ (например: [Критерий 1] <= [Параметр] <= [Критерий 2]).
Варианты через Table.SelectRows, которые я испробовал, можно посмотреть в шагах Фильтр-1,2,3,4, но желаемого результата не получилось Альтернативы с разворачиванием вложенных таблиц в новые строки и дальнейшей фильтрацией - мне не подходит...
Чувствую что выход есть (через Table.SelectRows), но найти его не могу... Прошу направить меня на путь истинный
Столкнулся с проблемой - не могу нигде найти как с помощью VBA поменять стиль комментариев в ячейке (но не всех, а только тех которые соответствуют определенному критерию).
В прилагаемом файле две таблицы: в таблице "Анализ" в столбцах А, Б, В внесены номера, разделенные пробелом. Макрос проходится по каждой ячейке таблицы "Анализ" и для каждого номера находит нужную строчку в таблице "Данные" и для этого номера склеивает столбцы "Начало", "Конец" и "Описание". После чего создает комментарий в соответствующей ячейке. Т.к. в одной ячейке может быть большое кол-во номеров, то хотелось бы облегчить анализ данных путем выделения в комментарии определенных пунктов другим стилем/цветом/шрифтом и т.п Например в таблице "Анализ_2" я в ручную выделил подчеркиванием те данные где в "Описание" есть слово "пьем".
Добрый день. Столкнулся с такой задачей: необходимо собрать/склеить столбцы содержащие в названии одинаковое имя (файл в приложении).
Имён много и они в дальнейшем будут меняться. По каждому имени также количество столбцов может меняться (например: Иван.1, Иван.2, Иван.3 и т.д.).
Написал запрос в PQ, который собирает столбцы по конкретному имени(и приходится на каждое новое имя делать новый шаг). Как написать универсальный запрос сообразить не могу. Прошу оказать помощь.
БМВ написал: На самом деле у вас в алгоритм заложена микробомба, а именно, первые установки будут реально загружены, что приводят к их износу не равномернуму по отношению к остальным
неее.. эти установки работают не только у нас, но и на других удалённых географически организациях. Поэтому надо у себя загрузить по максимуму минимальное количество установок. Так же сделают соседи. А вот резервные (недозагруженные) будут ездить туда-сюда (при условии что это будет экономически целесообразно), либо заменять основные на время ТО/ремонта.
Андрей VG, извиняюсь, не обратил внимание что две установки)) Тогда я не знаю какой алгоритм написать чтобы посчитать максимальную загрузку... Но из тех вариантов что преведены выше пока что наилучший это Ваш 3й через PQ и точно такие же результаты через формулы БМВ.
Андрей VG, в предполагаемом Вами варианте рассмотрена загрузка только одной установки (если бы был дефицит установок и других больше небыло, то тогда Ваш вариант распределения был бы оптимален). У меня задача стоит обеспечить максимальную загрузку для 2-6 установок (в зависимости от времени года), а остальные работают на подхвате, то у нас, то в другой организации. Более того к каждому периоду рассчитан предполагаемый объем работ, который часто не пропорционален времени на работу (т.к. в период заложено время на перемещение, монтаж, демонтаж и при разных исходных данных различная производительность каждой установки).
Андрей VG, вот Ваш 3 вариант для меня является самым оптимальным, спасибо. БМВ, спасибо за помощь. Остановлюсь на применении Вашей формулы т.к. с Power Query возможности работать нет (да и не умею).
Андрей VG, алгоритм я вижу следующий: 1) цикл берет минимальное значение из столбца B и подставляет в текущую строку столбца G. 2) далее запускается проверка на условие: полученный номер установки ищется в строках выше 2.1) в случае если номер не находится, то цикл переходит к следующей строке. 2.2) в случае если номер нашёлся(а найдётся он в нескольких строчках), то запускается проверка следующего условия - дата начала в текущей строке сравнивается с датой окончания в найденных строках (либо с самой поздней из найденных дат окончания) 2.2.1) если дата начала в текущей строке больше самой поздней даты окончания в найденных строках, то цикл переходит к следующей строке 2.2.2) если дата начала в текущей строке меньше или равна самой поздней дате окончания в найденных строках, то цикл берет следующее минимальное значение из столбца B и заново выполняется проверка по пункту 2.
если номера в столбце B закончились и условия не выполнены вылазит Msgbox "не хватает установок".
Андрей VG написал: Ну, потом перенумеруйте от 1 по убыванию количества дней использования и получите свои минимальные номера установок
Не вариант т.к. в Вашем файле загрузка у установок более или менее равномерная. Я пробовал проставлять весь список руками и получалась больше загрузка для первых установок и меньше для последних (при условии что я нигде не ошибался ).
Цитата
Андрей VG написал: Если рассматривать задачу качественно, то основной приоритет должен быть отдан КПД использования, а всё остальное вторично.
В моём случае надо максимально загружать первые установки и по возможности исключать работу последних (при этом количество установок в наличии варьируется и они переодически уходят в ремонт)... Количество работ и их продолжительность это тоже величина переменная (185 строк это только небольшая выборка)
Цитата
Андрей VG написал: Естественно, такую задачу лучше решать в VBA, используя ADODB.Recordset. Всё же класс задач на оптимизацию не конёк Power Query.
Вот кто бы мне помог с кодом... Я сам пробовал различные циклы писать... Но ничего толкового не вышло...
Андрей спасибо большое за помощь. Но в представленной Вами версии не выполняется условие 3. Т.е. когда первая установка освобождается она должна в приоритете загружаться работой. Дальше приоритет по загрузке по возрастанию номера установки.
Добрый день! Помогите пожалуйста решить следующую проблему: Есть 2 столбца - дата начала работ и дата окончания работ (файл в приложении). Работы выполняются на специальных установках. Надо сделать так чтобы в свободном столбце добавлялся порядковый номер установки исходя из следующих условий: 1. На каждом этапе работает только одна установка. 2. Когда установка заканчивает работу в одном этапе, её надо поставить на следующий ближайший свободный этап. 3. У установок с наименьшим порядковый номером должна быть максимальная загрузка по времени. 4. Максимально возможное количество установок не больше указанных в столбце B (они со временем могут меняться так же как и количество этапов и сроки проведения работ).
Формулами, надстройкой "поиск решений" и макросами самостоятельно решить проблему не смог. А проблема будет возникать часто... заранее спасибо за любую помощь в решении проблемы.