我在Excel中有以下PowerQuery
let
Source = Excel.CurrentWorkbook(){[Name="Query1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Month Year", type date}}),
#"Custom Step" = Table.SelectRows(#"Changed Type", each [Month Year] = #date(2017, 12, 1))
in
#"Custom Step"
我想设置它以便#date(2017,12,1))是一个参数。换句话说,我希望在工作表上有一个过滤器/下拉列表以及用户选择的内容(2017年12月,2016年11月等)。我希望“自定义步骤”根据选择过滤表格。
是否有某种语法允许我使用参数? (有点像SQL中的@variable)
答案 0 :(得分:1)
获取查询参数的方法有很多种。您可以使用命名范围并直接访问它或使用函数访问它,或者您甚至可以构建包含多个参数的表并使用函数访问它们。 Ken Puls对参数表here
有一个很好的起点只需一个参数,您就可以简单地使用命名范围。在以下屏幕截图中,单元格F4的范围名称为SelectedDate。使用行
很容易获得此参数myDate = Excel.CurrentWorkbook(){[Name="SelectedDate"]}[Content]{0}[Column1]
但结果将是文字,并且无法正确过滤表格。您需要将其转换为日期,例如将其包装到Date.From
函数
myDate = Date.From(Excel.CurrentWorkbook(){[Name="SelectedDate"]}[Content]{0}[Column1]),
现在变量 myDate 可用于过滤表格。这是完整的M代码:
let
myDate = Date.From(Excel.CurrentWorkbook(){[Name="SelectedDate"]}[Content]{0}[Column1]),
Source = Excel.CurrentWorkbook(){[Name="Query1"]}[Content],
ChangedType = Table.TransformColumnTypes(Source,{{"Month Year", type date}}),
Filtered = Table.SelectRows(ChangedType, each [Month Year] = myDate )
in
Filtered