Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Интервал между датами в Power Query
 
Цитата
написал:
Semen, добрый день!
Проверяйте, с примером совпало, как на реальных данных поведет себя - не ручаюсь  
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7  8  9  10  11  12  13  14  15      let          Source = Excel.CurrentWorkbook(){[Name=  "Данные"  ]}[Content],          ChangeType = Table.TransformColumnTypes(Source,{{  "Дата"  , type datetime}}),          Sort = Table.Sort(ChangeType,{{  "Дата"  , Order.Ascending}, {  "Объект"  , Order.Ascending}}),          AddIndex = Table.AddIndexColumn(Sort,   "Индекс"  , 0, 1),          DateBrake = Table.AddColumn(AddIndex,   "Пользовательская"  , each                try AddIndex[Дата]{[Индекс]} - #duration(1,0,0,0) = AddIndex[Дата]{[Индекс]-1} otherwise true),          Group = Table.Group(DateBrake, {  "Объект"  ,   "Пользовательская"  },               {{  "Начало"  , each List.Min([Дата]), type datetime},               {  "Конец"  , each List.Max([Дата]), type datetime}},              GroupKind.Local, (s,c)=> Number.From(c[Пользовательская] <> true)),          RemoveColumns = Table.SelectColumns( Group,{  "Объект"  ,   "Начало"  ,   "Конец"  }),          SortAgain = Table.Sort(RemoveColumns,{{  "Объект"  , Order.Ascending}, {  "Начало"  , Order.Ascending}})    in          SortAgain   
 

upd. Некорректно отрабатывает, если у последнего объекта одна дата и если эта дата уже попадает в какой-то другой объект( или несколько, но эти даты встречались ранее, т.к вижу, что пересечение дат возможно
Спасибо за помощь. :)
Чтобы решить проблему в случае пересечения периодов вроде достаточно сделать начальную сортировку по Объекту, а потом по Дате.

В понедельник проверю на реальных данных)
Изменено: Semen - 23.09.2022 16:40:11
Интервал между датами в Power Query
 
Добрый день. Прошу помочь в решении обратной проблемы:
На входе есть выгрузка типа "Объект" - "Дата".
На выходе надо получить "Объект" - "Начало" - "Окончание" (непрерывные периоды по каждому объекту).

Проблема в том что на каждый объект может выпадать несколько периодов поэтому обычной группировкой собрать из фарша мясо у меня не получилось...  
Power Query разбивка столбца с сортировкой значений
 
PooHkrd, спасибо за помощь!
Почти подошло.
Только если в первой ячейке будет одно имя, то на выходе будет получаться всегда один столбец (но тут я сам могу доработать)
Изменено: Semen - 02.06.2022 16:08:18
Power Query разбивка столбца с сортировкой значений
 
Добрый день! Прошу помочь решить проблемку:

Имеется: столбец с текстом (имена с разделителем "; ").
Задача: разделить столбец на новые по указанному разделителю, но при этом имена должны быть отсортированы согласно таблицы "Порядок" (как должно получится видно по таблице "Результат").

Стандартным мышка-клацательным способом не получается - нет сортировки (дальнейшие попытки собрать полученные столбцы в лист и отсортировать - не увенчались успехом).
List.Generate и List.Accumulate мой гладкий мозг осилить не может...

P.S. если это важно: в реальных данных от 1 до 5 имен в ячейке, таблица "Порядок" около 30 имён.
Изменено: Semen - 02.06.2022 15:03:29
Power Query фильтрация вложенных таблиц
 
Спасибо большое!  ;)
Надо мне учиться задавать переменные...
Power Query фильтрация вложенных таблиц
 
Добрый день!

При объединении двух запросов (ФАКТ и ПЛАН в файле) получается новый столбец [План] с вложенными таблицами.
Мне необходимо отфильтровать получившиеся вложенные таблицы по критериям указанным в таблице ФАКТ (например: [Критерий 1] <= [Параметр] <= [Критерий 2]).

Варианты через Table.SelectRows, которые я испробовал, можно посмотреть в шагах Фильтр-1,2,3,4, но желаемого результата не получилось
Альтернативы с разворачиванием вложенных таблиц в новые строки и дальнейшей фильтрацией - мне не подходит...

Чувствую что выход есть (через Table.SelectRows), но найти его не могу...
Прошу направить меня на путь истинный  
Стили комментариев (примечаний) в ячейках и VBA
 
Добрый день уважаемые!

Столкнулся с проблемой - не могу нигде найти как с помощью VBA поменять стиль комментариев в ячейке (но не всех, а только тех которые соответствуют определенному критерию).

В прилагаемом файле две таблицы: в таблице "Анализ" в столбцах А, Б, В внесены номера, разделенные пробелом.
Макрос проходится по каждой ячейке таблицы "Анализ" и для каждого номера находит нужную строчку в таблице "Данные" и для этого номера склеивает столбцы "Начало", "Конец" и "Описание". После чего создает комментарий в соответствующей ячейке. Т.к. в одной ячейке может быть большое кол-во номеров, то хотелось бы облегчить анализ данных путем выделения в комментарии определенных пунктов другим стилем/цветом/шрифтом и т.п
Например в таблице "Анализ_2" я в ручную выделил подчеркиванием те данные где в "Описание" есть слово "пьем".
Собрать столбцы по условию
 
buchlotnik, ATK, спасибо за помощь.
Собрать столбцы по условию
 
Спасибо за помощь, но лучше через запрос в PQ. Так как описанная выше задача, это один из шагов в достаточно длинном запросе PQ.
Собрать столбцы по условию
 
Добрый день. Столкнулся с такой задачей: необходимо собрать/склеить столбцы содержащие в названии одинаковое имя (файл в приложении).

Имён много и они в дальнейшем будут меняться.
По каждому имени также количество столбцов может меняться (например: Иван.1, Иван.2, Иван.3 и т.д.).

Написал запрос в PQ, который собирает столбцы по конкретному имени(и приходится на каждое новое имя делать новый шаг).
Как написать универсальный запрос сообразить не могу. Прошу оказать помощь.
Разделить массив дат по потокам (установкам)
 
Андрей VG,  нет придела совершенству)
БМВ, да все верно.
Разделить массив дат по потокам (установкам)
 
Цитата
БМВ написал:
На самом деле у вас в алгоритм заложена микробомба, а именно, первые установки будут реально загружены, что приводят к их износу не равномернуму по отношению к остальным
неее.. эти установки работают не только у нас, но и на других удалённых географически организациях. Поэтому надо у себя загрузить по максимуму минимальное количество установок. Так же сделают соседи. А вот резервные (недозагруженные) будут ездить туда-сюда (при условии что это будет экономически целесообразно), либо заменять основные на время ТО/ремонта.
Изменено: Semen - 21.10.2020 16:04:08
Разделить массив дат по потокам (установкам)
 
Андрей VG, извиняюсь, не обратил внимание что две установки))
Тогда я не знаю какой алгоритм написать чтобы посчитать максимальную загрузку...  :sceptic:
Но из тех вариантов что  преведены выше пока что наилучший это Ваш 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 "не хватает установок".
Изменено: Semen - 21.10.2020 07:53:04
Разделить массив дат по потокам (установкам)
 
Цитата
Андрей VG написал:
Ну, потом перенумеруйте от 1 по убыванию количества дней использования и получите свои минимальные номера установок  
Не вариант т.к. в Вашем файле загрузка у установок более или менее  равномерная. Я пробовал проставлять весь список руками и получалась больше загрузка для первых  установок и меньше для последних (при условии что я нигде не ошибался  :) ).
Цитата
Андрей VG написал:
Если рассматривать задачу качественно, то основной приоритет должен быть отдан КПД использования, а всё остальное вторично.
В моём случае надо максимально загружать первые установки и по возможности исключать работу последних (при этом количество установок в наличии варьируется и они переодически уходят в ремонт)... Количество работ и их продолжительность это тоже величина переменная (185 строк это только небольшая выборка)
Цитата
Андрей VG написал:
Естественно, такую задачу лучше решать в VBA, используя ADODB.Recordset. Всё же класс задач на оптимизацию не конёк Power Query.
Вот кто бы мне помог с кодом... Я сам пробовал различные циклы писать... Но ничего толкового не вышло... :(  
Разделить массив дат по потокам (установкам)
 
Андрей спасибо большое за помощь. Но в представленной Вами версии не выполняется условие 3. Т.е. когда первая установка освобождается она должна в приоритете загружаться работой. Дальше приоритет по загрузке по возрастанию номера установки.
Изменено: Semen - 20.10.2020 19:15:39
Разделить массив дат по потокам (установкам)
 
Заполнил
Разделить массив дат по потокам (установкам)
 
Добрый день! Помогите пожалуйста решить следующую проблему:
Есть 2 столбца - дата начала работ и дата окончания работ (файл в приложении). Работы выполняются на специальных установках. Надо сделать так чтобы в свободном столбце добавлялся порядковый номер установки исходя из следующих условий:
1. На каждом этапе работает только одна установка.
2. Когда установка заканчивает работу в одном этапе, её надо поставить на следующий ближайший свободный этап.
3. У установок с наименьшим порядковый номером должна быть максимальная загрузка по времени.
4. Максимально возможное количество установок не больше указанных в столбце B (они со временем могут меняться так же как и количество этапов и сроки проведения работ).

Формулами, надстройкой "поиск решений" и макросами самостоятельно решить проблему не смог. А проблема будет возникать часто... заранее спасибо за любую помощь в решении проблемы.  
Страницы: 1
Наверх