如何通过variablesreplacePower Query中的列名来筛选行?
在使用Excel Power Query开发的查询中,当我筛选列表的行时,我想用variablesreplace表列的名称。 不幸的是,我得到一个错误消息(例如expression式错误:没有find表的列xx)或过滤后没有行,即使它应该。 在下面的例子中,variables#“Filter”(=列名)被设置为列“B”,并在步骤#“Filter Rows”中用于过滤包含“1”的行。 但结果是没有显示行。 任何想法是什么原因以及如何解决这个问题? 也许variables需要有一个特殊的数据types?
提前致谢!
表: 要过滤的表
码:
let #"Filter" = "B", Source = Excel.CurrentWorkbook(){[Name="Tabelle2"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"A", Int64.Type}, {"B", Int64.Type}}), #"Changed Type1" = Table.TransformColumnTypes(#"Changed Type",{{#"Filter", type text}}), #"Filtered Rows" = Table.SelectRows(#"Changed Type1", each Text.Contains(#"Filter", "1")) in #"Filtered Rows"
#"Filter"
是值“B”,所以条件总是返回false。 Table.SelectRows
的第二个参数采用一个函数,它传递表中的当前行作为logging。 您可以执行以下任一操作来使用variables来指定列:
= Table.SelectRows(#"Changed Type", each Text.Contains(Record.Field(_, #"Filter"), "1"))
= Table.SelectRows(#"Changed Type", (x) => Text.Contains(Record.Field(x, #"Filter"), "1"))
在这些情况下, each
和_
都与(x) =>
和x
相同。 Record.Field(_, #"Filter")
获取当前行中#"Filter"
指向的列的值。