如何在Power查询中自动控制变量过滤器?

时间:2016-11-02 15:13:52

标签: excel excel-vba powerquery vba

是否有办法根据给定的值

控制过滤器在查询中选择值

让我们说, 我有以下电源查询,数据如下所示

     country          type       value1     value2....
    ----------------------------------------------------------------------
     USA              a1         22         12
     Uk               a2         21         10

现在在电源查询中,我手动过滤这些值,使其像country =“USA”,type =“a1”来获取数据透视表。

如何使用电源查询中的用户输入自动过滤值?

用户输入:

        country: [textbox] or workbook cell
        type   : [textbox] or workbook cell

非常感谢帮助,谢谢!

PS:我的工作查询如下所示,

let
   Source = Csv.Document(File.Contents("C:\Users\axlptl\Desktop\abc.csv"),[Delimiter=",", Columns=4, Encoding=1252, QuoteStyle=QuoteStyle.None]),
   UserInput = Excel.CurrentWorkbook(){[Name="Table1"]}[Content][country]{0},
   #"Promoted Headers" = Table.PromoteHeaders(Source),
   #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"country", type text}, {"type", type text}, {"value1", Int64.Type}, {"value2", Int64.Type}}),
   #"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([type] = UserInput))


in
   #"Filtered Rows"

2 个答案:

答案 0 :(得分:1)

尝试将22放入工作簿单元格(可能在另一张表格中)并从表格中选择。基本上,这样做:JSFiddle Demo

您希望查询的行类似于:

UserInput = Excel.CurrentWorkbook(){[Name="Table1"]}[Content][country]{0},

答案 1 :(得分:0)

您应该为包含Country和Type参数的单元格创建名称。 假设,单元格B1是国家,B2是类型。转到公式/名称管理器并为它们分配相应的名称。

然后(假设您的数据表名为Table1),您可以使用以下PowerQuery:

let
    Country = Excel.CurrentWorkbook(){[Name="Country"]}[Content][Column1]{0}?,
    Type = Excel.CurrentWorkbook(){[Name="type"]}[Content][Column1]{0}?,
    Table = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    Filter = Table.SelectRows(Table, each [country] = Country and [type] = Type)
in
    Filter

还要注意名称,它们区分大小写。