Два словаря, 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
А с ютубом всё – даже в студию не смог зайти зашёл - всё будет, но
позже
Лайки, комменты, подписки приветствуются )))
Надеюсь, было полезно.
Всех благ!
@buchlotnik