Найти тему
269 подписчиков

Два словаря, Combine, Expand и Split – а как вы провели выходные?

#АнатомияФункций – приёмы

Всем привет!
Подкинули в чат задачку, такую чтоб прям на фильтрацию по списку, группировку, превращение одной строки в несколько, да ещё и с дополнительными преобразованиями значений… Короче классную и комплексную )))
По этому поводу код:
let
lst = List.Buffer(Excel.CurrentWorkbook(){[Name="artlist"]}[Content][Value]),
dict = Record.FromList(List.Repeat({true},List.Count(lst)),lst),
f=(x)=>Record.FieldOrDefault(dict,x[#"Артикул (продукции)"],false),
g=(x)=>not f(x),
h=(x)=>Table.SelectRows(from,x),

from = Table.Buffer(Excel.CurrentWorkbook(){[Name="combatset"]}[Content]),
nms = List.Buffer({"Реквизиты спецификации"}&List.LastN(Table.ColumnNames(from),4)),
dict1 = Record.FromTable(Table.RenameColumns(Table.Group(h(f),"Партия (продукции)",{"Value",(x)=>Table.SelectColumns(x,nms&{"Сдано на склад"})}),{"Партия (продукции)","Name"})),

j=(x)=>[a=Record.FieldOrDefault(dict1,x{3}),
b=List.Last(x),
c=Table.ToList(a,(x)=>List.FirstN(x,4)&{x{4}/x{5}*b}),
d=if a = null then {x} else c][d],

cmb = Table.CombineColumns(h(g),nms,j,"tmp"),
exp = Table.ExpandListColumn(cmb,"tmp"),
to = Table.SplitColumn(exp,"tmp",(x)=>x,nms)

in
to

Ну а что тут к чему – разбираю на Дзене

Файл с исходниками уже лежит на sponsr

А с ютубом всё – даже в студию не смог зайти зашёл - всё будет, но позже

Лайки, комменты, подписки приветствуются )))

Надеюсь, было полезно.
Всех благ!
1 минута