如何用Power Query动态追加Excel中同结构表生成数据集?
动态合并Excel中所有列名一致的表
完全可以实现,你只需要基于已有的表名称列表,添加加载表并合并的步骤即可,具体操作如下:
步骤1:获取所有表名称(你已完成的部分)
先筛选出当前Excel文件中的所有表,并提取名称列表:
#"Filtered Rows" = Table.SelectRows(Source, each ([Kind] = "Table")), Name = #"Filtered Rows"[Name]
步骤2:创建自定义函数加载单个表
创建一个函数,传入表名即可加载对应的表数据:
let LoadTable = (tableName as text) => let Source = Excel.CurrentWorkbook(){[Name=tableName]}[Content] in Source in LoadTable
步骤3:应用函数并合并所有表
将函数应用到名称列表,生成包含所有表数据的列表,再用Table.Combine合并成一个数据集:
#"Converted to Table" = Table.FromList(Name, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Added Custom" = Table.AddColumn(#"Converted to Table", "Custom", each LoadTable([Column1])), #"Combined Tables" = Table.Combine(#"Added Custom"[Custom])
完整代码整合
把所有步骤整合到一起的完整M代码如下:
let Source = Excel.CurrentWorkbook(), #"Filtered Rows" = Table.SelectRows(Source, each ([Kind] = "Table")), Name = #"Filtered Rows"[Name], // 定义加载表的函数 LoadTable = (tableName as text) => let TableSource = Excel.CurrentWorkbook(){[Name=tableName]}[Content] in TableSource, // 应用函数并合并 #"Converted to Table" = Table.FromList(Name, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Added Custom" = Table.AddColumn(#"Converted to Table", "TableData", each LoadTable([Column1])), #"Combined Tables" = Table.Combine(#"Added Custom"[TableData]) in #"Combined Tables"
这个方法会自动识别当前Excel中所有表,不管表名是Table1、Table12这类不规则命名,只要列名一致,就能无缝合并成一个数据集。
内容的提问来源于stack exchange,提问作者Umut K
相关产品推荐
相关产品推荐

