Power Query多同格式文件转置合并问题求助
解决思路:先转置单文件,再批量合并
你之前的问题核心是处理顺序搞反了:先合并再转置会破坏单个文件的结构逻辑,正确的做法是先对每个文件单独完成转置和格式整理,再把处理好的文件合并到一起。
Power Query 具体操作步骤
先做单个文件的转置模板
- 随便导入一个目标文件到Power Query,完成你已经熟练的转置操作:选区域、点「转换」→「转置」、把第一行设为表头,确保输出的列结构是你要的样子。
- 这一步是为了生成可复用的处理逻辑。
改成批量处理所有文件
- 打开「高级编辑器」,把原来指定单个文件路径的代码,替换成批量读取文件夹的代码:
// 替换原Source行及后续单文件读取代码 Source = Folder.Files("C:\存放所有文件的文件夹路径"), // 过滤只保留你需要的文件格式,比如xlsx或csv #"Filtered Files" = Table.SelectRows(Source, each List.Contains({".xlsx", ".csv"}, [Extension])), // 给每个文件添加自定义列,读取文件内容 #"Added Custom" = Table.AddColumn(#"Filtered Files", "文件内容", each Excel.Workbook(File.Contents([Folder Path]&[Name]), null, true)) - 把你之前处理单个文件的转置、表头设置等代码,直接套用到「文件内容」列的每个元素上(比如用
Table.TransformColumns或者展开后再处理,但更高效的是在自定义列里直接完成)。
- 打开「高级编辑器」,把原来指定单个文件路径的代码,替换成批量读取文件夹的代码:
展开合并所有处理后的文件
- 处理完每个文件的转置后,点击「文件内容」列的展开按钮,选择所有要保留的列,就能得到合并后的最终表格。
额外提示
- 如果需要区分每条数据来自哪个文件,在批量步骤里加一列文件名:
#"Added File Name" = Table.AddColumn(#"Added Custom", "来源文件", each [Name]) - 一定要确保所有源文件的原始格式完全一致,包括表头位置、列数,否则转置后会出现列错位。
内容的提问来源于stack exchange,提问作者higam saiful
相关产品推荐
相关产品推荐

