PowerQuery 引用工作簿名称

PowerQuery refer to workbook name

下面的代码是简单的从source中提取A列中所有带"Spencer"的列。工作簿名称本身是 Spencer.xlsx。所以我想做一些类似 each ([Column1] = This.Workbook.Name)) 的事情,但我不知道 PowerQuery 语言中的语法应该是什么。

let
    Source = Excel.Workbook(File.Contents("C:\Users\spencer\Documents\Source.xlsx"), null, true),
    Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
    #"Changed Type" = Table.TransformColumnTypes(Sheet1_Sheet,{{"Column1", type text}, {"Column2", Int64.Type}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([Column1] = "Spencer"))
in
    #"Filtered Rows"

在 excel 工作簿中的一个单元格中创建一个公式,该单元格 returns 当前文件名,并为该单元格指定一个范围名称,这里以 "TheFilename" 为例

=MID(CELL("filename",A1),FIND("[",CELL("filename",A1))+1,FIND(".xl",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1)

使用以下语法在 powerquery 中引用该范围名称,您可以使用 Home...Advanced Editor 将其粘贴到 powerquery 中

name = Excel.CurrentWorkbook(){[Name="TheFilename"]}[Content]{0}[Column1]

然后像这样在您的过滤器中引用它

#"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([Column1] = name))