let fn=(t)=>let Col = Table.ColumnNames(t), GroupBy = List.RemoveMatchingItems(Col,{Col{1},Col{5}}), List = {{Col{1}, each Text.Combine(List.Transform(Table.Column(_,Col{1}),Text.From),",")}, {Col{5}, each List.Sum(Table.Column(_,Col{5}))}} in Table.ReorderColumns(Table.Group(t,GroupBy,List),Col), Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Source1 = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content], Merge = Table.NestedJoin(fn(Source),{"Столбец1","Столбец4"},fn(Source1),{"Столбец1","Столбец4"},"2",3), Group = Table.Group(Merge, {"2"}, {{"1", each Table.RemoveColumns(_,{"2"}), type table}})[[1],[2]], Transform = Table.FromRecords(Table.TransformRows(Group,(r)=> Record.TransformFields(r,{ {"1",each Table.ReplaceValue(_,null,r[2]{0}[Столбец1],Replacer.ReplaceValue,{"Столбец1"})}, {"2",each Table.ReplaceValue(_,null,r[1]{0}[Столбец1],Replacer.ReplaceValue,{"Столбец1"})} }))), ColN = List.Zip(List.Transform(Table.ColumnNames(Source),each {_,"1."&_,"2."&_})), Result = Table.ExpandTableColumn(Table.ExpandTableColumn(Transform, "1", ColN{0}, ColN{1}),"2", ColN{0}, ColN{2}) in Result
[/vba]
Вариант в Power Query[vba]
Код
let fn=(t)=>let Col = Table.ColumnNames(t), GroupBy = List.RemoveMatchingItems(Col,{Col{1},Col{5}}), List = {{Col{1}, each Text.Combine(List.Transform(Table.Column(_,Col{1}),Text.From),",")}, {Col{5}, each List.Sum(Table.Column(_,Col{5}))}} in Table.ReorderColumns(Table.Group(t,GroupBy,List),Col), Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Source1 = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content], Merge = Table.NestedJoin(fn(Source),{"Столбец1","Столбец4"},fn(Source1),{"Столбец1","Столбец4"},"2",3), Group = Table.Group(Merge, {"2"}, {{"1", each Table.RemoveColumns(_,{"2"}), type table}})[[1],[2]], Transform = Table.FromRecords(Table.TransformRows(Group,(r)=> Record.TransformFields(r,{ {"1",each Table.ReplaceValue(_,null,r[2]{0}[Столбец1],Replacer.ReplaceValue,{"Столбец1"})}, {"2",each Table.ReplaceValue(_,null,r[1]{0}[Столбец1],Replacer.ReplaceValue,{"Столбец1"})} }))), ColN = List.Zip(List.Transform(Table.ColumnNames(Source),each {_,"1."&_,"2."&_})), Result = Table.ExpandTableColumn(Table.ExpandTableColumn(Transform, "1", ColN{0}, ColN{1}),"2", ColN{0}, ColN{2}) in Result
krosav4ig, Спасибо, но возникло еще одно условие (столбец 8) - дело в том, что наименование по столбцу 8 в двух таблицах (ресурс 1 и ресурс 2) не совсем коррелируется, но при этом при сравнении и создании на него (столбец) необходимо опираться.
Вопрос: 1. Возможно ли опираясь на столбцы 1,4,8 - сделать сопоставление двух таблиц 2. Как протянуть вниз результаты итоговой таблицы (очень много позиций)
Заранее спасибо.
krosav4ig, Спасибо, но возникло еще одно условие (столбец 8) - дело в том, что наименование по столбцу 8 в двух таблицах (ресурс 1 и ресурс 2) не совсем коррелируется, но при этом при сравнении и создании на него (столбец) необходимо опираться.
Вопрос: 1. Возможно ли опираясь на столбцы 1,4,8 - сделать сопоставление двух таблиц 2. Как протянуть вниз результаты итоговой таблицы (очень много позиций)
krosav4ig, У меня expression.error: "Столбец8" таблицы не найден. PQ ругается,видимо,на вкладку "ресурс2, столбец 8 - в редакторе везде гордый "NULL". Хотя по первой вкладке 8-ой столбец подтянул без проблем.
Прошу прростить, понять и помочь.
спасибо
krosav4ig, У меня expression.error: "Столбец8" таблицы не найден. PQ ругается,видимо,на вкладку "ресурс2, столбец 8 - в редакторе везде гордый "NULL". Хотя по первой вкладке 8-ой столбец подтянул без проблем.
WERDART, у вас на листе ресурс 2 таблица не растянулась на столбец 8 [vba]
Код
let fn=(t)=>let Col = Table.ColumnNames(t), GroupBy = List.RemoveMatchingItems(Col,{Col{1},Col{5}}), List = {{Col{1}, each Text.Combine(List.Transform(Table.Column(_,Col{1}),Text.From),",")}, {Col{5}, each List.Sum(Table.Column(_,Col{5}))}} in Table.ReorderColumns(Table.Group(t,GroupBy,List),Col), Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Source1 = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content], Merge = Table.NestedJoin(fn(Source),{"Столбец1","Столбец4","Столбец8"},fn(Source1),{"Столбец1","Столбец4","Столбец8"},"2",3), Group = Table.Group(Merge, {"2"}, {{"1", each Table.RemoveColumns(_,{"2"}), type table}})[[1],[2]], Transform = Table.FromRecords(Table.TransformRows(Group,(r)=> Record.TransformFields(r,{ {"1",each Table.ReplaceValue(_,null,r[2]{0}[Столбец1],Replacer.ReplaceValue,{"Столбец1"})}, {"2",each Table.ReplaceValue(_,null,r[1]{0}[Столбец1],Replacer.ReplaceValue,{"Столбец1"})} }))), ColN = List.Zip(List.Transform(Table.ColumnNames(Source),each {_,"1."&_,"2."&_})), Result = Table.ExpandTableColumn(Table.ExpandTableColumn(Transform, "1", ColN{0}, ColN{1}),"2", ColN{0}, ColN{2}) in Result
[/vba]
WERDART, у вас на листе ресурс 2 таблица не растянулась на столбец 8 [vba]
Код
let fn=(t)=>let Col = Table.ColumnNames(t), GroupBy = List.RemoveMatchingItems(Col,{Col{1},Col{5}}), List = {{Col{1}, each Text.Combine(List.Transform(Table.Column(_,Col{1}),Text.From),",")}, {Col{5}, each List.Sum(Table.Column(_,Col{5}))}} in Table.ReorderColumns(Table.Group(t,GroupBy,List),Col), Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Source1 = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content], Merge = Table.NestedJoin(fn(Source),{"Столбец1","Столбец4","Столбец8"},fn(Source1),{"Столбец1","Столбец4","Столбец8"},"2",3), Group = Table.Group(Merge, {"2"}, {{"1", each Table.RemoveColumns(_,{"2"}), type table}})[[1],[2]], Transform = Table.FromRecords(Table.TransformRows(Group,(r)=> Record.TransformFields(r,{ {"1",each Table.ReplaceValue(_,null,r[2]{0}[Столбец1],Replacer.ReplaceValue,{"Столбец1"})}, {"2",each Table.ReplaceValue(_,null,r[1]{0}[Столбец1],Replacer.ReplaceValue,{"Столбец1"})} }))), ColN = List.Zip(List.Transform(Table.ColumnNames(Source),each {_,"1."&_,"2."&_})), Result = Table.ExpandTableColumn(Table.ExpandTableColumn(Transform, "1", ColN{0}, ColN{1}),"2", ColN{0}, ColN{2}) in Result