Всем привет У меня есть расчет индекса сортировки товаров на сайте - десятки факторов, который помогают сформировать ЧИСЛО, по которому идет сортировка.
На основе которой, мы получаем Расчетную позицию. Но есть категорийные менеджеры, которые некоторым товарам задают конкретную позицию в листинге.
Соответственно вопрос, как с учетом Расчетного Места и Зарезервированных мест получить итоговый список сортировки, чтобы первым делом распределились Зарезервированные места, а потом по РАсчетному месту по сдвигами(если заняты зарезервированные места), чтобы получилось вот так
Благодарю, фаил примера приложил. Все делаю в Power Query
Доброе время суток. Vsevolod, вам нужно каждый раз напоминать, что нужно отписываться в своих темах? Или вы форум рассматриваете как своего рода магазин?
Максим Зеленский, да ладна, нету тут никакой комбинаторики. Вот по быстрому на коленке сляпал:
Код
let
Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
TabDif = Table.AddIndexColumn( Table.FromList( List.Difference( Source[Расчетное место], Source[Зарезервированное] ), Splitter.SplitByNothing(), {"ИтогРасчет"} ), "Индекс", 0, 1 ),
UnReserved = Table.SelectRows(Source, each ([Зарезервированное] = null)),
AddedIndex = Table.Join( Table.AddIndexColumn(UnReserved, "Индекс", 0, 1), {"Индекс"}, TabDif, "Индекс" ),
Reserved = Table.SelectRows(Source, each ([Зарезервированное] <> null)),
Out = Table.AddColumn(Reserved, "ИтогРасчет", each [Зарезервированное]) & Table.RemoveColumns( AddedIndex, {"Индекс"} )
in
Out
Теперь ТС через месяцок-другой зайдет как обычно и порадуется. В принципе можно по наводке от Imke F прицеплять полученный массив незарезервированных номеров без использования индексов и джойнов, но сейчас заморачиваться не хотел, хотя на большом массиве так будет быстрее работать.
Максим Зеленский написал: Но начальную сортировку по расчетному месту я бы добавил
Разрешите поинтересоваться? А с какой целью? Вроде бы List.Difference и Table.SelectRows на порядок элементов не влияют. Или это опять best practice? У кого про такое прочитать?
Хотя не думаю, что двойная сортировка даст выигрыш по времени. Исходно решение (не предполагавшее использование столбца "Расчётное место") у меня было таким же как и у вас (ну, почти)