Power Query自定义列提取文件指定单元格值以分组合并文件求助
解决Power Query按特定单元格值拆分合并文件的问题
针对Excel文件的正确自定义列公式
你之前用Excel.CurrentWorkbook()是错误的,这个函数读取的是当前操作的工作簿,而非每个导入的原始文件。要读取每个Excel文件的指定单元格,用下面的公式:
- 取B2单元格(第2行第2列):
= Excel.Workbook(File.Contents([Folder Path]&[Name])){0}[Data]{1}[Column2] - 取B3单元格(第3行第2列):
= Excel.Workbook(File.Contents([Folder Path]&[Name])){0}[Data]{2}[Column2]
公式说明:
{0}:代表文件中的第一个工作表(如果数据在其他工作表,改成对应索引,比如第二个工作表用{1})[Data]:提取工作表的内容数据{1}:代表第2行(Power Query索引从0开始,第1行是{0})[Column2]:代表第2列(对应Excel中的B列,A列是[Column1])
针对CSV文件的正确自定义列公式
你之前的公式错误在于列索引,B列对应[Column2]而非[Column1],正确公式:
- 取B2单元格(第2行第2列):
= Csv.Document(File.Contents([Folder Path]&[Name])){1}[Column2] - 如果CSV文件有表头行,需要先指定表头参数,再取对应行:
= Table.FromRecords(Csv.Document(File.Contents([Folder Path]&[Name]), [Headers=true])){0}[Column2]
(这里{0}代表表头后的第一行,也就是Excel里的B2)
公式失效的排查要点
- 检查文件路径:确保
[Folder Path]&[Name]拼接的路径正确,没有空格、特殊字符,且文件未被其他程序(比如Excel)占用 - 核对索引:Power Query的行、列、工作表索引都是从0开始,别和Excel的1开始规则搞混
- 确认文件格式:如果是混合格式文件,要区分Excel(.xlsx/.xls)和CSV(.csv)分别处理
替代筛选方法
如果自定义列操作麻烦,可根据文件特征直接筛选:
- 按文件名筛选:如果两组文件命名有规律(比如一组前缀是"Group1_",另一组是"Group2_"),直接在
Name列用文本筛选器匹配前缀 - 按文件属性筛选:如果两组文件的创建日期、修改日期或文件大小有明显区分,用
Folder.Files加载的属性列(比如Date created)筛选
内容的提问来源于stack exchange,提问作者Rui
相关产品推荐
相关产品推荐

