Решил задачку, но точно криво. В примере таблицы на листе, а так они в отельных файлах и не умные таблицы. Нашел пока решение объединить не структурированные таблицы через оформление каждой таблицы в виде запроса. Есть ли более изящный способ решить такую задачку без запросов? т.к. файлы будут ежемесячно пополняться и на каждый файл делать запрос думаю не самое правильное решение. Буду признателен за любой совет.
Добрый день, всем участникам форума!
Решил задачку, но точно криво. В примере таблицы на листе, а так они в отельных файлах и не умные таблицы. Нашел пока решение объединить не структурированные таблицы через оформление каждой таблицы в виде запроса. Есть ли более изящный способ решить такую задачку без запросов? т.к. файлы будут ежемесячно пополняться и на каждый файл делать запрос думаю не самое правильное решение. Буду признателен за любой совет.Anis625
файлы расположены случайным образом или имеется конкретная папка? к чему можно привязаться? - наименования листов в файлах одинаковы (или по крайней мере их количество фиксированное)?
для папки что-то такое будет: [vba]
Код
let f=(x)=>[a = Excel.Workbook(x){0}[Data], b = Table.PromoteHeaders(a)][b],
from = Folder.Files("C:\Users\usr\Desktop\test")[[Name],[Content]], trnsf = Table.TransformColumns(from,{"Content",f}), lst = List.Distinct(List.Combine(List.Transform(trnsf[Content],Table.ColumnNames))), to = Table.ExpandTableColumn(trnsf,"Content",lst) in to
файлы расположены случайным образом или имеется конкретная папка? к чему можно привязаться? - наименования листов в файлах одинаковы (или по крайней мере их количество фиксированное)?
для папки что-то такое будет: [vba]
Код
let f=(x)=>[a = Excel.Workbook(x){0}[Data], b = Table.PromoteHeaders(a)][b],
from = Folder.Files("C:\Users\usr\Desktop\test")[[Name],[Content]], trnsf = Table.TransformColumns(from,{"Content",f}), lst = List.Distinct(List.Combine(List.Transform(trnsf[Content],Table.ColumnNames))), to = Table.ExpandTableColumn(trnsf,"Content",lst) in to
прохожий2019, Прилетели файлы с 1С =( выше таблицы есть строки. Код работает отлично (Космос пока для меня сразу писать на языке М). Буду признателен если получится помочь с файлом: удалить верхние 6 строк чтобы код отработал как надо и если получится добавить период слева от каждой таблицы. Файлы xls отрабатывает PQ хорошо
прохожий2019, Прилетели файлы с 1С =( выше таблицы есть строки. Код работает отлично (Космос пока для меня сразу писать на языке М). Буду признателен если получится помочь с файлом: удалить верхние 6 строк чтобы код отработал как надо и если получится добавить период слева от каждой таблицы. Файлы xls отрабатывает PQ хорошоAnis625
он их отрабатывает плохо - медленно и нестабильно... а так пожалуйста (удаляются 6 строк, с третьей забирается период, в списке столбцов удаляются пустые - привет 1С-никам, гореть им...):[vba]
Код
let f=(x)=>[a = Excel.Workbook(x){0}[Data], b = Table.Skip(a,6), c = Table.PromoteHeaders(b), tmp = Table.SelectRows(c, each [Субконто]<>null), Период = a{2}[Column1]][[tmp],[Период]], g=(x)=>List.Select(List.Distinct(List.Combine(List.Transform(x,Table.ColumnNames))),(y)=>not Text.Contains(y,"Column")),
from = Table.Buffer(Folder.Files("C:\Users\usr\Desktop\test")[[Name],[Content]]), trnsf = Table.TransformColumns(from,{"Content",f}), exp = Table.ExpandRecordColumn(trnsf, "Content", {"Период", "tmp"}), lst = g(exp[tmp]), to = Table.ExpandTableColumn(exp,"tmp",lst) in to
он их отрабатывает плохо - медленно и нестабильно... а так пожалуйста (удаляются 6 строк, с третьей забирается период, в списке столбцов удаляются пустые - привет 1С-никам, гореть им...):[vba]
Код
let f=(x)=>[a = Excel.Workbook(x){0}[Data], b = Table.Skip(a,6), c = Table.PromoteHeaders(b), tmp = Table.SelectRows(c, each [Субконто]<>null), Период = a{2}[Column1]][[tmp],[Период]], g=(x)=>List.Select(List.Distinct(List.Combine(List.Transform(x,Table.ColumnNames))),(y)=>not Text.Contains(y,"Column")),
from = Table.Buffer(Folder.Files("C:\Users\usr\Desktop\test")[[Name],[Content]]), trnsf = Table.TransformColumns(from,{"Content",f}), exp = Table.ExpandRecordColumn(trnsf, "Content", {"Период", "tmp"}), lst = g(exp[tmp]), to = Table.ExpandTableColumn(exp,"tmp",lst) in to