Добрый день. Прошу помощи. Необходимо решить задачку: имеются столбцы с указанием элемента и с каким элементом он связан (в примере это столбцы 1 и 2). Нужно получить результат (столбец 3) - элемент A связан с B, B связан с C, С c D, E с A. I связан с J, J с B, поэтому результат такой связки должен быть A,B,C,D,E,I,J. F,G,H соответственно связаны только друг с другом. Заранее спасибо за помощь
Добрый день. Прошу помощи. Необходимо решить задачку: имеются столбцы с указанием элемента и с каким элементом он связан (в примере это столбцы 1 и 2). Нужно получить результат (столбец 3) - элемент A связан с B, B связан с C, С c D, E с A. I связан с J, J с B, поэтому результат такой связки должен быть A,B,C,D,E,I,J. F,G,H соответственно связаны только друг с другом. Заранее спасибо за помощьUnforcer
let from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], nms = Table.ColumnNames(from), cmb = Table.Distinct(from & Table.RenameColumns(from,List.Zip({nms,List.Reverse(nms)}))), grp = Table.Group(cmb, "Точки1", {"Value", each [Точки2]}), lst=List.Buffer(Table.ToList(grp,(x)=>{x{0}}&x{1})),
f=(x,y)=>List.Distinct(List.Combine(List.Select(y,(i)=>List.ContainsAny(i,x))&{x})), g=(x,y)=>List.Select(y,(i)=>not List.ContainsAny(i,x)), gen=List.Generate( ()=>[a=lst,b=a{0}?,c=f(b,a),d=g(c,a)], (x)=>x[b]<>null, (x)=>[a=x[d],b=a{0}?,c=f(b,a),d=g(c,a)], (x)=>Text.Combine(x[c],",")) in gen
[/vba]
может M подойдёт? [vba]
Код
let from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], nms = Table.ColumnNames(from), cmb = Table.Distinct(from & Table.RenameColumns(from,List.Zip({nms,List.Reverse(nms)}))), grp = Table.Group(cmb, "Точки1", {"Value", each [Точки2]}), lst=List.Buffer(Table.ToList(grp,(x)=>{x{0}}&x{1})),
f=(x,y)=>List.Distinct(List.Combine(List.Select(y,(i)=>List.ContainsAny(i,x))&{x})), g=(x,y)=>List.Select(y,(i)=>not List.ContainsAny(i,x)), gen=List.Generate( ()=>[a=lst,b=a{0}?,c=f(b,a),d=g(c,a)], (x)=>x[b]<>null, (x)=>[a=x[d],b=a{0}?,c=f(b,a),d=g(c,a)], (x)=>Text.Combine(x[c],",")) in gen