批量汇总Excel工作簿多表数据,结合CELL函数实现动态化数据源及需要注意的Formula.Firewall问题

2021-08-31 09:56:41 浏览数 (1)

小勤:大海,我发现Power Query里有个很烦的事情,就是Excel工作簿或者文件夹的路径一改,PQ里就得跟着改源的路径,能不能动态自动化一点儿啊?

大海:这个的确是的。PQ的源里的文件路径是固定文本,但如果你的源文件符合以下2种情况,倒有办法实现动态化自动识别:

1、动态获取PQ操作结果所在的Excel工作簿路径;

2、动态获取PQ操作结果所在的Excel工作簿所在的文件夹路径。

小勤:嗯。能动态处理这2种情况就很不错啦。

大海:你知道现在Excel里有个CELL函数吗?

小勤:啊?CELL函数?

大海:是这样的,Excel里有个CELL函数,可以取得当前工作簿的文件路径。新建一个表,在A2里写公式:=CELL("filename")

小勤:啊。这个函数能获得当前工作簿的当前工作表路径,但也只是在Excel里啊,PQ里咋搞?

大海:既然Excel里能整出来,那咱们在PQ里就想办法把Excel里整出来的这个数据弄进去啊。

小勤:嗯。有道理。那是建立一个查询吗?

大海:对的,咱们完善一下,弄成一张表的样子,然后把这个路径弄到PQ里:

Step-01:以仅创建连接的方式获取文件路径数据

接着,咱们把工作簿的路径整理出来(提取符号“]”之前的内容,并且"["替换为空)

Step-02:提取文件路径

Step-03:替换掉文件路径中不需要的字符

这样,咱们就得到了这个工作簿的文件路径。接下来咱们就可以很嗨森地去用它了。比如咱们合并整个工作簿中的工作表数据,具体方法如动画所示:

Step-04:在【高级编辑器】中将源数据的路径修改为前面步骤所获得的文件路径

修改前代码及需要修改的地方如下:

红色背景显示的文件路径内容修改如下,其他代码不动:表1{0}[文件路径]

小勤:知道了,实际就是从刚才的文件路径查询里引用它的查询结果,你在文章——理解PQ里的数据结构《跨查询的表引用》和《行列引用》里有提到过这种跨查询的数据引用方法。

大海:对的。就这样,当你的工作簿移到其他地方的时候,CELL函数会自动获得工作簿的文件路径,PQ里自然就跟着刷新了。

小勤:不对哦!为什么我引用了动态路径后,为什么报Formula.Firewall错误?

或者在结果表里刷新时出现这个错误(……引用其他查询或步骤,因此可能不会直接访问数据源。请重新生成此数据组合):

大海:哦?!这是查询之间的调用有隐私设置问题,调整一下查询选项设置即可:

0 人点赞