使用PowerQuery从多个子目录中的多个工作簿中提取多个工作表

时间:2016-07-20 13:36:34

标签: loops powerpivot powerquery

基本上,我坚持使用.xls工作簿的层次结构,我希望使用PowerQuery将其编译为PowerPivot数据模型。

主目录   - 零售商文件夹#1       - 品牌#1工作簿            - SKU工作表#1            - SKU工作表#2       - 品牌#2工作簿   - 零售商文件夹#2       - 品牌#1工作簿            - SKU工作表#1            - SKU工作表#2       - 品牌#2工作簿

使用PowerQuery有一种简单的方法吗?

一个复杂因素:每个工作簿最后都包含2个需要排除的摘要选项卡。同样,每个文件夹都包含一个摘要工作簿,该工作簿也是需要排除的聚合。

2 个答案:

答案 0 :(得分:2)

我个人更喜欢避免使用功能,因为我发现它们更难以调试&保持。相反,我只使用From Folder并过滤到我想要的文件,然后使用公式添加自定义列:

= Excel.Workbook ( [Contents] )

然后,您可以将其展开为工作表和表格,过滤该列表并展开Excel.Workbook.Data列以获取数据单元格。您可以保留足够的元数据列以标识每行的来源(文件夹/文件/表)。

这样可以在PQ UI中维护整个Query。当问题发生时(Excel源代码不可避免),您可以逐步完成整个过程并隔离问题。

如果来自不同源查询的多个调用,我只使用函数。这听起来不像这里的情况。

答案 1 :(得分:0)

应该是。您可以使用“从文件夹”(Folder.Files)访问Excel工作簿并过滤掉摘要工作簿。然后,对于剩余的工作簿,您可以创建一个函数,当给定Excel工作簿时,该函数将转到所需的工作表并删除最后两列。您可以添加一个自定义列,然后调用此函数。