Страницы: 1
RSS
Power Query замена значений в списке столбцов по условию
 
Добрый день, есть следующая задача
У нас есть товары у товаров есть упаковка, упаковке назначается штрихкод закодированный цифрами. Все эти данные отдаются в Мой склад.

Я разобрался как генеририовать нужные столбцы для самой упаковки и для штрихкода упаковки на основе кода товара, но не понимаю как нормально задать объединение + замену текста в столбцах. В общем все значения отличные от нуля в столбца вида Упаковка(ШК):50:Сode нужно заменить на [код] пробел [значение cтолбца]
И если вы подскажете как обращать к группе столбцов типа столбцы которые в названии содержат "упаковка" -- что бы не пришлось каждый раз перечислять их все будет очень здорово. Но главный вопрос: как заменить значения в столбцах по условию. В примере есть на каком шаге я остановился и что в итоге должно получится.
 
= Table.ReplaceValue(#"ЖРЁМ БИЗОНА",each [Код],43,(a,b,c)=> if a>0 then Text.From(b)&"  "&Text.From(a) else a ,
   List.Select(Table.ColumnNames(#"ЖРЁМ БИЗОНА"), each Text.Contains(_,"ШК")))
 
А можно ведь не жрать бизона, а сразу по-человечески собрать нужные столбцы:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Вход"]}[Content],
    Custom = Table.Combine( 
        Table.AddColumn(
            Source, 
            "tab", 
            each let k=[Кратность] 
                 in Table.AddColumn( 
                        Table.FromRecords({_}), 
                        "Упаковка:"&Text.From(k),
                        each k ))[tab] ),
    Custom1 = Table.Combine( 
        Table.AddColumn(
            Custom, 
            "tab", 
            each let c=[Код], k=[Кратность] 
                 in Table.AddColumn( 
                        Table.FromRecords({_}), 
                        "Упаковка (ШК):"&Text.From([Кратность])&":Code128",
                        each Text.From(c)& " " & Text.From(k) ) )[tab] )
in
    Custom1
Изменено: PooHkrd - 19.01.2021 20:24:04
Вот горшок пустой, он предмет простой...
 
Михаил Л, большое спасибо! Заработало!

PooHkrd, очень крутой код осталось понять как его вставить в мой запрос :/ Ну или хотя бы должным образом понять что тут происходит.
 
А что именно непонятно?
Вот горшок пустой, он предмет простой...
 
Артём Глазков, ну вот смотрите, вы полностью выделили сообщение модератора и процитировали его целиком, хотя это сообщение и так видно, т.е. смысл цитаты - отсутствует. Таким образом вы еще раз позлите модератора.  ;) В данном случае уместно использовать кнопку Имя, а не цитата.
Опять же даже если сообщение собеседника видно, но оно пространное и вы хотите прокомментировать только его часть, то и цитировать нужно именно эту часть, например:
Цитата
Артём Глазков написал:
что конкретно не так.
а не сообщение целиком. Поэтому вам предложили пройтись по своим сообщениям, и либо убрать цитаты, либо исправить их так, чтобы это было осмысленным и не захламляло форум. Это про
Цитата
vikttur написал:
бездумная копия
А по сути предложенного мной кода вопросы остались?
Изменено: PooHkrd - 20.01.2021 10:16:47
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
   Custom = Table.Combine(         Table.AddColumn(            Source,             "tab",             each let k=[Кратность]                  in Table.AddColumn(                         Table.FromRecords({_}),                         "Упаковка:"&Text.From(k),
Что конкретно здесь происходит? Можете пояснить? Вот эта переменная k почему и как она выбрана?
Цитата
PooHkrd написал:
  each let k=[Кратность]                  in Table.AddColumn(
Тут вы видимо вкладываете запрос в запрос, я с этими штуками работать не умею, видимо пора учится, объясните пожалуйста логику как вы это собираете, мне похоже не хватает принципиального понимания работы с запросами.

Как я понял вы вместо того что бы сначала сформировать эм "сетку" из строк и колонок с правильными названиями, сразу формируете и значения, верно?  
 
Здравый смысл неплохо описан в сообщении №5
Страницы: 1
Наверх