PowerQuery ссылается на название книги - PullRequest
1 голос
/ 27 января 2020

Следующий код должен просто извлечь все столбцы с «Спенсером» в столбце А из источника. Само имя книги называется Spencer.xlsx. Поэтому я хотел бы сделать что-то вроде каждого ([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"

1 Ответ

1 голос
/ 27 января 2020

Создайте формулу в ячейке в книге Excel, которая возвращает текущее имя файла, и дайте этой ячейке имя диапазона, в качестве примера здесь «TheFilename»

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

Обратитесь к этому имени диапазона в powerquery, используя Синтаксис ниже, который вы можете вставить в powerquery с помощью Home ... Advanced Editor

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

, а затем обратиться к нему в своем фильтре, как это

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