【Excel】【Power Query】Powerquery实现自动更新的动态路径。(Powerquery查询文件或文件夹只支持绝对路径,不支持相对路径,当文件夹的位置改变后该怎么办?)

一、适用场景:

Powerquery查询文件或文件夹只支持绝对路径,不支持相对路径。

有的时候你需要把文件打包发给你的呆瓜领导或者笨瓜同事,文件夹的位置改变后该怎么办?

这时候我们就需要一个自动更新的动态路径,我们采用曲线救国的方法:

二、先来复习Powerquery查询文件夹(合并文件夹),不需要复习的客户请跳到三、:

2.1、我新建了一个文件夹【新建文件夹】,文件夹里有文件夹【数据表格】和查询表格【数据表格汇总.xlsx】

2.2、打开【数据表格汇总.xlsx】→【数据】选项卡→【获取数据】→【来自文件】→【从文件夹】选择【新建文件夹】里的【数据表格】文件夹→【转换数据】。

2.3、打开Powerquery页面的【主页】选项卡→【高级编译器】可以看到M语言代码(一会儿要修改这个代码)。

2.4、打开Powerquery页面的【添加列】选项卡→【自定义】列,“自定义列公式”里输入“= Excel.Workbook([Content], true)”,注意:大小写敏感。

2.5、展开【自定义】列,再展开【Data】列就可以处理合并文件夹里的数据了:

三、关键来了:自动更新的动态路径。

3.1、查询结果表格前插入多行(或者放在别的sheet工作表里也行);

3.1.1、选择两行两列,按住Ctrl+T,创建表中表;

3.1.2、【列1】改成【文件夹名】,下面手动填写存放数据的文件夹名称【数据表格】;

3.1.3、【列2】改成【文件夹路径】,下面填写【=LEFT(CELL("filename"), FIND("[", CELL("filename")) - 1) & A2】

3.1.4、就这样b2单元格里就有了组合成功的绝对路径。

3.2、引用绝对路径:重新打开Powerquery,【主页】→【高级编译器】

源 = Folder.Files("C:\Users\79994\Desktop\新建文件夹\数据表格"),

第一行代码改成:

源 = Folder.Files(Excel.CurrentWorkbook(){[Name="表2"]}[Content]{0}[文件夹路径]),

解释一下上面的代码:

1、Excel.CurrentWorkbook():函数来引用当前正在使用的 Excel工作簿文件。

2、{[Name="表2"]}:表2是Ctrl+T创建的表中表的名称(注意:不是工作簿workbook的名称,也不是工作表sheet的名称,是表中表table的名称,要根据你的表格名称变化)。

3、[Content]:表示获取“表2”中的数据。

4、{0}:从“表2”的第一行(索引为 0)中提取数据。Power Query 中的索引从 0 开始,因此{0}表示第一行。

5、[文件夹路径]:这是从第一行中提取“文件夹路径”列的值。假设“表2”中有一列名为“文件夹路径”,代码会提取该列的值。

四、完工总结:

4.1、这样无论你把【新建文件夹】放到任何地方,你都不需要改代码,就可以随时刷新。即使【新建文件夹】重命名也不影响。

4.2、不过如果你把【数据表格】文件夹改名成【数据表格2】,那么你得修改这里的值,才能刷新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值