Power Query中如何基于当前工作簿单元格值选择目标工作表
简便实现Power Query引用当前工作簿单元格值替换工作表名称
方法一:单元格命名法(推荐,稳定可靠)
为D15单元格命名
选中Excel里的D15单元格,点击顶部公式栏左侧的「名称框」,输入自定义名称(比如SheetName),按回车确认即可。修改Power Query代码
在原代码开头新增读取单元格值的步骤,用变量替换硬编码的工作表名称:
// 读取已命名的单元格值 SheetName = Excel.CurrentWorkbook(){[Name="SheetName"]}[Content]{0}[Column1], Source = Excel.Workbook(File.Contents("My File Path"), null, true), // 用变量SheetName替换原有的"Parent" Target_Sheet = Source{[Item=SheetName,Kind="Sheet"]}[Data], #"Promoted Headers" = Table.PromoteHeaders(Target_Sheet, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Name", type text}, {"DoB", type date}, {"Class", type text}}) in #"Changed Type"
方法二:直接定位单元格(无需命名,适合临时场景)
如果不想命名单元格,可直接通过工作表、行/列索引定位D15(注意行/列索引从0开始计数:第15行对应索引14,D列对应第4列):
// 替换"Sheet1"为D15所在的实际工作表名称 SheetName = Excel.CurrentWorkbook(){[Name="Sheet1"]}[Data]{14}[Column4], Source = Excel.Workbook(File.Contents("My File Path"), null, true), Target_Sheet = Source{[Item=SheetName,Kind="Sheet"]}[Data], #"Promoted Headers" = Table.PromoteHeaders(Target_Sheet, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Name", type text}, {"DoB", type date}, {"Class", type text}}) in #"Changed Type"
注意事项
- 方法一的单元格命名不会随行/列位置变动失效,稳定性更强;
- 方法二中若D15所在的工作表名称、行/列位置发生变化,需同步修改代码里的对应参数;
- 确保D15单元格的值是目标工作表的准确名称,避免大小写或空格错误导致读取失败。
内容的提问来源于stack exchange,提问作者Edward Tillen
相关产品推荐
相关产品推荐

