我在一个文件中有 30 个不同的 Excel 表,所有 5 列共有。我想将它们合并到一个包含这 5 列的表以及表名的一列中。
我知道我可以在不加载它们的情况下将每个表导入 PowerQuery(并添加一个带有表名的列) - 然后使用 Table.Combine 将它们组合起来。
但是,我想知道是否可以有另一个具有 30 行的表,描述要导入的表的名称 - 并使用更复杂的 M 查询运行此表的导入 - 类似于使用 Binary.Combine 导入多个CSV 文件...
我在一个文件中有 30 个不同的 Excel 表,所有 5 列共有。我想将它们合并到一个包含这 5 列的表以及表名的一列中。
我知道我可以在不加载它们的情况下将每个表导入 PowerQuery(并添加一个带有表名的列) - 然后使用 Table.Combine 将它们组合起来。
但是,我想知道是否可以有另一个具有 30 行的表,描述要导入的表的名称 - 并使用更复杂的 M 查询运行此表的导入 - 类似于使用 Binary.Combine 导入多个CSV 文件...
MetaTable
假设表的名称存储在名为column的表中Table name
,下面的 PowerQuery 脚本将完成这项工作。为了插入它,请使用 PowerQuery 选项卡,从其他来源 -> 空白查询 -> 查看选项卡 -> 高级编辑器并插入以下文本:
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