Страницы: 1
RSS
Реально ли через Power Query реализовать то, что делает ВПР с параметром 1 по двум условиям
 
Добрый день! Помогите плз, есть разбивка магазинов по АВС, есть сумма реализации товара, есть шкала выставления скидок. Необходимо по двум условиям АВС магазина и Сумма товара подтянуть из шкалы скидку. На форуме нашла решение с одним условием, только по сумме, но не могу понять, как добавить еще критерий магазина ( Реализовать необходимо в PQ
Изменено: Алена - 08.12.2021 09:59:16
 
добрый
вариант
 
mechanix 85, спасибо огромное!!!
 
подождите, сейчас спецы дадут решение попроще
 
Через функцию немного проще получается и алгоритм более очевидный.
Реализация во вложении.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий, почему у меня в столбце "%" показывает ошибку?
 
удалите в добавленных столбцах Индексов 4-й аргумент функции
 
еще вариант с явно прописанными условиями
Код
let
    a = Table.PromoteHeaders(Excel.CurrentWorkbook(){[Name="src"]}[Content]),
    b = List.Buffer(Table.ToRows(Table.PromoteHeaders(Excel.CurrentWorkbook(){[Name="skidka"]}[Content]))),
    #"Added Custom" = Table.AddColumn(a, "a", each 
if [Сумма]>7500 then 4 else
if [Сумма]>6000 then 3 else
if [Сумма]>4500 then 2 else
if [Сумма]>2500 then 1 else 0),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "b", each 
if [магазин АВС] = "А" then 1 else 
if [магазин АВС] = "В" then 2 else 3),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Пользовательский", each b{[a]}{[b]}),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom2",{"a", "b"})
in
    #"Removed Columns"
 
Цитата
написал:
Через функцию немного проще получается и алгоритм более очевидный. Реализация во вложении.
Дмитрий(The_Prist) Щербаков, спасибо! так оптимальнее, заодно и с функцией вроде разобралась, ранее еще не приходилось использовать, учусь.
Изменено: Алена - 08.12.2021 15:59:24
 
Цитата
mechanix 85 написал:
дадут решение попроще
Здесь этот случай подробно разобран, даже в более сложной реализации.
Алена, это самый быстрый из известных мне алгоритмов интервального поиска на языке М. Да и для понимания он совсем не сложный, почти все сделано на кнопках.
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    Unpivoted = Table.UnpivotOtherColumns(Source, {"Сумма от"}, "магазин АВС", "%_скидки"),
    Dupe = Table.DuplicateColumn(Unpivoted, "Сумма от", "Сумма"),
    Tab = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content] & Dupe,
    Sorted = Table.Sort(Tab,{{"магазин АВС", Order.Ascending}, {"Сумма", Order.Ascending}, {"Сумма от", Order.Descending}}),
    FilledDown = Table.FillDown(Sorted,{"%_скидки"}),
    FilteredNulls = Table.SelectRows(FilledDown, each ([Сумма от] = null)),
    Removed = Table.RemoveColumns(FilteredNulls,{"Сумма от"})
in
    Removed
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх