Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 使用PowerQuery从多个子目录中的多个工作簿中提取多个工作表_Loops_Powerpivot_Powerquery - Fatal编程技术网

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

Loops 使用PowerQuery从多个子目录中的多个工作簿中提取多个工作表,loops,powerpivot,powerquery,Loops,Powerpivot,Powerquery,从本质上讲,我一直坚持使用.xls工作簿的层次结构,我希望使用PowerQuery将其编译成PowerPivot数据模型 主目录 -零售商文件夹#1 -品牌#1手册 -SKU工作表#1 -SKU工作表#2 -品牌#2手册 -零售商文件夹#2 -品牌#1手册 -SKU工作表#1 -SKU工作表#2 -品牌#2手册 使用PowerQuery有没有一种简单的方法可以做到这一点 一个复杂问题是:每个工作簿的末尾都包含两个需要排除的摘要选项卡。同样,每个文件夹都包含一个摘要工作簿,它也是一个需要排除的聚合

从本质上讲,我一直坚持使用.xls工作簿的层次结构,我希望使用PowerQuery将其编译成PowerPivot数据模型

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

使用PowerQuery有没有一种简单的方法可以做到这一点


一个复杂问题是:每个工作簿的末尾都包含两个需要排除的摘要选项卡。同样,每个文件夹都包含一个摘要工作簿,它也是一个需要排除的聚合。

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

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

我个人更喜欢避免使用函数,因为我发现它们更难调试和维护。相反,我只使用“从文件夹”和“过滤器”来筛选所需的文件,然后使用以下公式添加自定义列:

=Excel.Workbook([Contents])

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

这将使整个查询的维护保持在PQ UI中。当出现问题时(Excel源不可避免),您可以逐步完成整个过程并隔离问题


我仅在有来自不同源查询的多个调用时使用函数。这听起来不像这里的情况。

我个人更喜欢避免使用函数,因为我发现它们更难调试和维护。相反,我只使用“从文件夹”和“过滤器”来筛选所需的文件,然后使用以下公式添加自定义列:

=Excel.Workbook([Contents])

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

这将使整个查询的维护保持在PQ UI中。当出现问题时(Excel源不可避免),您可以逐步完成整个过程并隔离问题


我仅在有来自不同源查询的多个调用时使用函数。这听起来不像这里的情况。

这太棒了!我昨天刚开始使用PowerQuery,我能够将多个目录的脏数据编译到一个数据库中——我的替代解决方案是使用VBA在这些目录中循环,放入一个巨大的数组,然后写入CSV。这要容易得多。谢谢你的回复。这太棒了!我昨天刚开始使用PowerQuery,我能够将多个目录的脏数据编译到一个数据库中——我的替代解决方案是使用VBA在这些目录中循环,放入一个巨大的数组,然后写入CSV。这要容易得多。谢谢你的回复。