【问题标题】:Excel Power Query - What's the best way to combine Excel Files with multiple Worksheets where WorkSheet may not exist in all WorkbooksExcel Power Query - 将 Excel 文件与多个工作表组合在一起的最佳方法是什么,其中工作表可能不存在于所有工作簿中
【发布时间】:2020-04-18 21:32:50
【问题描述】:

我正在使用 Excel Power Query 使用 Get Data->From File->From Folder 将多个 (50+) Excel 文件合并到一个文件夹中。每个文件都会有一个或多个工作表(不知道我最终会得到多少)。例如。

文件 1:Sheet1、Sheet2、Sheet3

文件 2:Sheet1、Sheet2

文件 3:Sheet1、Sheet3

Sheet1 工作正常,因为它出现在所有 3 个文件中,但是由于 Sheet2 和 Sheet3 没有出现在所有文件中,我得到一个 expression.error "key didn't match"

在“合并文件”屏幕上,您可以选择要合并的工作表,还可以选择“跳过有错误的文件”。通过选择此选项,我不再收到错误,但我想知道这是否是一种安全的方法,因为我想我正在删除所有错误,无论错误是否与丢失的工作表有关?

据我所知,这个选项创建了 'Removed Errors1' 行,然后在扩展表格列时使用它

#"Removed Errors1" = Table.RemoveRowsWithErrors(#"Removed Other Columns1", {"Transform File from S:\ (3)"}),
#"Expanded Table Column1" = Table.ExpandTableColumn(#"Removed Errors1", "Transform File from S:\ (3)", Table.ColumnNames(#"Transform File from S:\ (3)"(#"Sample File (3)"))),

使用 Power Query 而不是 VBA 背后的想法是,个人用户将更新他们的电子表格,而 Power Query 将是一个统一的视图,以根据更新的数据跟踪各种统计信息。从最初确定我正在处理的项目的范围开始,这很有效,因为用户只需要保存他们的电子表格,然后 Power Query 只需要刷新。

回答后添加的其他信息 我忘记提到的一件事是每个工作表中的数据非常不同(例如,Sheet1 与 Sheet2 有许多不同的列)。每个工作表都是它自己的查询。

【问题讨论】:

    标签: excel powerquery


    【解决方案1】:

    看看这是否能让你开始

    数据 ... 获取数据 .. 从其他来源 ... 空白查询 .... 高级编辑器 ...

    将下面的内容粘贴在框中的所有内容上

    let Source = Folder.Files("c:\directory\subdirectory\"),
    #"Added Custom" = Table.AddColumn(Source, "Custom", each Excel.Workbook([Content],true)),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"Custom", "Name"}),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Removed Other Columns", "Custom", { "Data", "Item"}, {"Data", "Tab"}),
    ColumnsToExpand = List.Distinct(List.Combine(List.Transform(Table.Column(#"Expanded Custom" , "Data"), each if _ is table then Table.ColumnNames(_) else {}))),
    #"Expanded Data" = Table.ExpandTableColumn(#"Expanded Custom", "Data", ColumnsToExpand, ColumnsToExpand )
    in #"Expanded Data"
    

    更改第 1 行以反映文件的存储路径

    点击“完成”

    它的作用是

    (a) 读入指定目录中的所有excel文件 (b) 拉出每个文件的内容 (c) 删除多余的列 (d) 拉出每个选项卡的内容到表中 (e) 动态确定所有唯一列所有选项卡的名称 (f) 使用适当的列名展开所有选项卡

    这将为您留下一个表格,显示原始文件名、原始选项卡及其内容

    【讨论】:

    • 谢谢,太好了。我在“扩展自定义”之后插入了一个额外的步骤,以根据选项卡名称进行过滤,以解决我作为附加信息添加的内容。额外的好处是我得到了我需要但不知道如何获得的标签名称。
    猜你喜欢
    • 2011-01-04
    • 2022-12-13
    • 2023-03-24
    • 1970-01-01
    • 2017-09-09
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多