我在一个文件中有30个不同的Excel表,共有5列。我想将它们合并到一个包含这5列的表中,以及一个用于表名的列。
我知道我可以将每个表导入PowerQuery而不加载它们(并添加一个带有表名的列) - 然后使用Table.Combine将它们组合起来。
但是,我想知道是否有可能有另一个包含30行的表,描述要导入的表的名称 - 并使用更复杂的M查询运行此表的导入 - 类似于使用Binary.Combine导入多个CSV文件...
答案 0 :(得分:0)
假设表的名称存储在MetaTable
列中名为Table name
的表中,下面的PowerQuery脚本将完成这项工作。要插入它,请使用PowerQuery选项卡,From Other Sources - >空白查询 - >查看标签 - >高级编辑器并插入以下文本:
let
AllTables = Excel.CurrentWorkbook(),
TableConf = AllTables{[Name="MetaTable"]}[Content],
TableConfWithContent = Table.NestedJoin(TableConf,{"Table name"},AllTables,{"Name"},"Table"),
Expand1 = Table.ExpandTableColumn(TableConfWithContent, "Table", {"Content"}, {"Table.Content"}),
Expand2 = Table.ExpandTableColumn(Expand1, "Table.Content", {"Column Name1", "Column Name2", "Column Name3", "Column Name4", "Column Name5"}, {"Column Name1", "Column Name2", "Column Name3", "Column Name4", "Column Name5"})
in
Expand2