我之前写过一篇帖子,提到了利用参数表格来简化PowerQuery操作步骤,让不怎么会用PowerQuery的其他同事通过填写表格来操作刷新PowerQuery查询结果。
该帖子有一个缺陷:就是同事拿到我的PowerQuery模板文件后,还要自己辛辛苦苦去找数据文件的位置并粘贴进来。今天学到一个新的方法:** 利用Excel的Cell()函数结合PowerQuery参数表格来自动获取文件位置。**
一、【示例文件说明】
1.PowerQuery模板文件名字叫《学员班级学习报告》;
2.引用了两个原始文件:《员工培训详情报表.csv》和《个人学习报表-详情导出.csv》
3.参数表格结构如下:
二、操作步骤
1.建立一个文件夹,重命名为“学员班级学习报告”,将模板文件放入这个文件夹。
2.在该文件夹下新建一个子文件夹,将其命名为“原始数据”。
3.将业务系统中导出来的原始数据文件放到上一步产生的子文件夹内。【注意】不要对这些原始文件做任何修改,包括重命名,一切保持原汁原味就好;不过如果原始文件的名字类似于“人员导出(1).csv”这样的,还是把括号连同里边的数字去掉为宜,否则模板会出错。
4.打开PowerQuery模板,在参数表格的Value列的单元格内,分别填入
=LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1),1)-1)&"原始数据\员工培训详情报表.csv"
=LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1),1)-1)&"原始数据\个人学习报表-详情导出.csv"
自动获取地址完毕
5.将整个“学员班级学习报告”文件夹发给同事。
6.同事拿到该文件夹后,将“原始数据”子文件夹下面的原始数据文件全部替换为最新的数据。
7.打开PowerQuery模板文件,刷新。
三、结论
比起之前的参数表格来,利用这种方法,同事要做的只是替换原始文件,然后刷新,连文件路径都不用手动填写了。
这个例子也提醒我,Excel和PowerQuery并没有什么高下优劣之分(我自己自从学习了PowerQuery之后就产生一个极其变态的偏见——Excel公式太复杂,PowerQuery好牛逼),工具本身的威力往往取决于使用它的人——将其用在最适合的地方就能发挥最大的威力。
网友评论
像您提到的powerquery获取文件夹下的文件名,有个前提是要获取到原始数据文件所在的文件路径,如果把模板文件从我电脑拷到同事电脑,原始数据文件的绝对路径肯定会发生变化。目前我还没找到powerquery如何获取当前文件的绝对路径以及相对路径。