View in Telegram
Два словаря, 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
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Find friends or serious relationships easily