加入 PowerBI自己学 知识星球:下载源文件,边学边练;遇到问题,还可以提问交流。
文件夹内有多个Excel文件,通过获取文件夹可以获取多个Excel文件,但是直接点击组合按钮后经常遇到报错,因为此操作对数据有一定的要求:
1 文件夹中只能有Excel类型的文件;
2 每个Excel文件中需要合并的Sheet名称相同;
3 文件夹内不能有存放了不需要合并的Excel文件的子文件夹。
同时,使用获取文件夹功能还会生成一些过程查询,不能删除,让查询列表看起来很乱。
解决方案
把文件合并的过程拆解,通过手工操作,简单几个步骤,就可以把以上问题规避掉。
举例
从如下带有诸多冗余信息的文件夹中,获取并合并多个非隐藏的相同表头Excel文件。
操作步骤
STEP 1 点击菜单栏获取数据下的更多-文件夹,选择好本地文件夹后,不要点击组合或加载,点击转换数据。
STEP 2 进入PowerQuery后,点击Attitudes(属性)列标题右侧的展开按钮,然后直接点击确定。
STEP3 从Folder Path(文件夹路径)列选择要合并的文件目录,把子文件夹剔除;从Attributes.Kind(属性.种类)列选择“Excel File”,把其他类型的文件筛选掉;从Attributes.Hidden(属性.隐藏)选择FALSE,把文件夹内可能隐藏的无用文件筛选掉。如果有必要,还可以通过文件名称的关键字进行筛选,确保仅保留下需要的文件。
STEP 4 点击菜单栏添加列下的自定义列,输入Excel.Workbook([Content]),把Excel的文件内容存储在自定义列。
如果是CSV文件,转换公式如下:
Csv.Document([Content],[Delimiter=",", Columns=1, Encoding=65001, QuoteStyle=QuoteStyle.None])。
STEP 5 点击自定义列标题右侧的展开按钮,直接点击确定,展开Excel文件信息。
STEP 6 在Custom.Hidden列筛选“FALSE”,把文件内隐藏的无用的Sheet筛选掉。其他字段也可以做筛选,比如Custom.Name选择Sheet名称包含什么关键字,比如Sheet1,同样是确保留下的Sheet是需要的Sheet。
STEP 7 在Custom.Data列上点击鼠标右键,选择删除其他列。
STEP 8 点击Custom.Data列标题右侧的展开按钮,直接点击确定。
STEP 9 点击表的左上角的表格按钮,选择将第一行用作标题,然后从其中任意一列筛选不等于这一列的标题名称,比如日期列筛选不等于"日期",用来把其他Sheet的表头去掉。
STEP 10 点击列标题左侧的类型图标,按需修改每列的数据类型,然后关闭并应用。