此系列文章用于讲解如何使用Excel或PowerBI中的Power Query功能,读取文件夹中的特定文件。
文章分为以下几篇:
一、默认功能读取修改日期最新的文件
二、一步读取修改日期最新的文件
三、一步读取文件名包含特定日期的文件
四、一步读取文件名日期最新的文件
此系列文章主要用于解决日常会持续收到更新的数据源,且每日的文件命名会产生变化,我们需要用到此数据源做报表,又不想每日打开文件复制粘贴的情况。
本文内容为:默认功能读取修改日期最新的文件
一、背景描述
假设我们每天会收到业务部门汇总的一个销售数据的文件,同时这个文件是汇总了历史数据的。
以前,传统的方法是我们每天打开收到的文件,然后复制粘贴到我们的报表中,替换历史数据,然后完成报表。
现在,有了Power Query(理论上Excel2010版本就有了,2013及之后的版本会更成熟一些),我们就有了更简便的新选择,可以把我们以前的手动步骤瞬间变成:
打开最终报表,点击刷新数据,等待数据刷新完成就可以了。
上面的例子,今天我们使用默认的功能来实现打开“修改日期为最新的文件”,如截图中的“file1-20220807.xlsx”这个文件。
二、实现步骤
以下示例均在office 365中操作,理论上Excel2016及之后的版本不会有太大的差别。
1、首先,我们新建一个Excel文档(一般是作为最终报表使用的文档);然后通过“数据→来自文件→从文件夹”功能,找到我们存放源数据的文件夹
2、出现弹框,点击“转换数据”,以进入Power Query编辑界面
3、可以看到PQ已经为我们读取了文件夹下面的文件列表,有文件名、扩展名、访问时间、修改时间、创建时间等等字段
这里,我们就获取“修改时间(Date midified)为最新的时间”
4、我们点击“Date midified”右侧的向下箭头,在出来的选项卡中点击“日期/时间筛选器”,然后选择最晚
5、这个时候我们就只保留了了我们想要的文件“file1-20220807.xlsx”。但这还不是最终的内容,实际的表格内容在“Content”字段中
6、然后点击“Content”字段右边的两个向下箭头对数据进行深化,就可以看到我们这个Excel文件里面所包含的表格,在左侧选择需要导入的sheet名称,右侧会出现数据预览;确定好需要的表格会后,点击确定即可获得数据
7、获得的最终数据我们可以看到多出了一列“Source.Name”,多文件合并时,可能需要保留此列,用以溯源。如果不需要,可以邮件点击列标题,选择删除即可。
8、最后我们点击菜单“主页”的“关闭并上载”,即可将数据加载到Excel中。
三、问题和衍生
一般而言,这样做就可以实现减少我们的手动复制粘贴步骤的目的。
但其实细心一点的小伙伴可能就发现了我们的PQ窗口的“查询”界面,从一开始的只有一个查询,变成了有5个查询,并且生成了一些文件夹和看起来不是很明白的东西。
对于读取单个文件,这种影响不大,但在实际应用中,我们读取的文件数量可能是几个几十个的。如果每个源文件都按这样生成查询记录,对后续的维护是一个比较大的挑战。
所以,我们下一期讲,如何调整优化查询,使它的查询只保留一个。