Страницы: Пред. 1 2
RSS
Power Query Замена данных в массиве на основе справочника
 
Михаил Л, Спасибо.

Понял что литеры в скобках я задаю сам и важна их последовательность, а не содержание.
Последовательность литер в скобках задает последовательность в пользовательской функции (применимо к Table.ReplaceValue) за стрелкой.

Что то вроде сложилось. Еще раз спасибо.
 
Цитата
mitox написал:
литеры в скобках я задаю сам и важна их последовательность, а не содержание.Последовательность литер в скобках задает последовательность в пользовательской функции
Картинку смотрели? Там понятно
 
Цитата
Андрей VG написал:
Доброе время суток.Вариант.

Прикрепленные файлы
Пример3.xlsx  (25.98 КБ)
День добрый.
Не могу понять почему работает только в случае полного соответствия данных в ячейке таблицы "График" данным в таблице "Справочник"?
функция Table.ReplaceValue(graphs,"М","45",Replacer.ReplaceText,{"Январь"}) отработает замену как "ggg45" если в ячейке будет указано не "М", а "gggМ", а указанная в решении указывает null.
Код
let
    graphs = Excel.CurrentWorkbook(){[Name="График"]}[Content],
    #"Замененное значение" = Table.ReplaceValue(graphs,"М","45",Replacer.ReplaceText,{"Январь"}),
    dict = Excel.CurrentWorkbook(){[Name="Справочник"]}[Content],
    replaceInCols = List.Range(Table.ColumnNames(graphs), 1),
    result = Table.ReplaceValue(graphs, null, null, (s, o, n) => dict{[Наименование=s]}?[Количество]?, replaceInCols)
in
    result

Так как не могу понять почему, не могу и изменить на необходимую. Помогите понять пожалуйста.
 
mitox, попробуйте так
Код
= Table.ReplaceValue(graphs,"М",0,(a,b,c)=> if Text.Contains(a,b) then b else a,{"Январь"})
Цитата
mitox написал:
Помогите понять

Цитата
Михаил Л написал:
Картинку смотрели? Там понятно
 
Михаил Л, Я не понял про какую картинку мы говорим?
 
mitox, вам Михаил давал ссылку на пост Алексея Жигулина, который в свою очередь давал ссылку на свой пост на форуме ТечНет. Собственно вот она вся суть Table.ReplaceValue()

Первое что из неё следует, что 4-й аргумент это всегда функция, в которую мы всегда передаем 3 аргумента  ;)
Второе - это не значит что все 3 аргумента в этой функции должны использоваться, грубо говоря мы там можем вообще не задействовать ни один из них. :D  
И третье, стрелочками показано какие аргументы функции Table.ReplaceValue() в каком порядке будут подставлены в функцию риплейсер.
Изменено: PooHkrd - 30.04.2020 10:59:09
Вот горшок пустой, он предмет простой...
 
PooHkrd, Спасибо. Вспомнил. Но ток теперь руки дошли самому пробовать повторять некоторые примеры в других задачах. Так уж мозги устроены у меня.
 
Цитата
mitox написал:
Понял что литеры в скобках я задаю сам и важна их последовательность, а не содержание.Последовательность литер в скобках задает последовательность в пользовательской функции (применимо к Table.ReplaceValue) за стрелкой.
В тот раз вы сказали очень умную вещь. Я ничего не понял :)  и потому хотел уточнить:
Цитата
Михаил Л написал:
Картинку смотрели? Там понятно
Через некоторое время я услышал:
Цитата
mitox написал:
Я не понял про какую картинку мы говорим?
:D  
 
Михаил Л, У меня в голове очень много не нужной мне в жизни информации - регламенты, положения, инструкции, бюджеты, система мотивации, и все это по нескольким отраслям (я настраиваю бизнес-процессы). И потому моя память работает кластерами и алгоритмами )))) Мне чтоб что то вспомнить нужно точку отсчета и тогда я вспоминаю все по теме так как знаю ее базовые алгоритмы.

И тут пришлось учиться работать в PowerQuery и PowerPivot - и тут я въезжаю в пня, так как до сих пор не могу понять логику мышления программиста который решает задачу с помощью того или иного языка (не линейно - по кнопкам, а объемно - используя циклы и т.д.). Поэтому пробую, ищу примеры, воспроизвожу, запоминаю... Но пень во мне в этой теме до сих пор сидит :D  Потому иногда возвращаюсь к вопросам чтоб понять...

А тут картинка по ссылке - самом конце первого листа в ссылке (я просматривал несколько раз эти страницы, но на нее взгляд не упал, а в памяти не закрепилась((((
Изменено: mitox - 30.04.2020 12:05:47
Страницы: Пред. 1 2
Наверх