上一篇文章Power BI Power Query 批量导入1-单Excel工作簿中的所有工作表数据,我讲了如何将单个工作簿中所有工作表数据汇总,那么如果想要将某个文件夹下的所有工作簿中的所有工作表汇总该如何操作了?
我现在有某公司北京、成都、广州、上海各分部的销售数据工作簿,各分部各年度的数据分别存储在相应工作簿的对应工作表中,如下图所示。
1、首先,请按照Power BI Power Query 批量导入1-单Excel工作簿中的所有工作表数据介绍的内容,将“北京”工作簿中的所有表数据导入到Power Query中
2、接下来我们首先去拿到文件夹下所有的工作簿文件的全路径字符串列表,在Power Query界面中依次点击“新建源/文件/文件夹”,填入文件夹路径后点击确定,在随后弹出对话框中,直接点击“转换数据”按钮
3、保留“Name”和”Folder Path”2列,删掉其他所有列
4、然后添加一个自定义列,名称为“文件全名”,公式为:
=[Folder Path]&[Name]
添加自定义列后,将Name和Folder Path列也删掉
接下来操作的思路:
1、首先需要将第1步中单工作簿工作表数据合并的操作包装成一个函数,让该函数接收一个工作簿路径参数,并返回最终的合并表
2、随后我们在刚才前面得到的文件全名的表中调用包装的函数,这样每一个文件就会得到一个子列表
3、将子列表展开之后,就会得到所有工作簿中所有工作表的数据汇总结果
首先我们来定义一个参数
1、依次点击“主页/管理参数/新建参数”
2、参数的名称与刚才查询得到的表的列“文件全名”名称一样,设置类型为文本,指定当前值,然后点击确定
3、随后我们要将该参数使用到第1步操作得到的那个查询中去,在查询列表中选择“2012年”那个查询,点击“主页/高级编辑器”,将"G:\PowerBI\合并数据源\北京.xlsx"更换为如下代码,更换完毕后点击确定按钮
源 = Excel.Workbook(File.Contents(Text.From(文件全名)), null, true),
4、在”2012年”查询上右击,选择“创建函数”,在随后弹出的对话框中,设置函数的名称,我这里以Func开头,后面跟上函数的含义
5、在查询列表中,选中“文件全名”列所在的查询,依次点击“添加列/调用自定义函数”,配置自定义函数的参数:新列名,调用的函数名称,以及参数值得来源。配置完成后,点击确定按钮即可。
6、接下来我们展开“子列表”即可,去掉“使用原始列表作为前缀”的勾选。
7、加载完毕后,所得到的数据就是所有工作簿下所有工作表的汇总数据了
8、需要说明一下的是,Power Query加载数据不会自动加载所有数据,如果此时你展开“文件全名”列,看到的列表区可能像下面这样,只有一个数据,此时你需要点击“加载更多”来查看