2017-05-17 216 views
0

Excel Power Queryで作成されたクエリでは、リストの行をフィルタリングするときに、テーブルの列名を変数に置き換えたいと考えています。残念ながら、エラーメッセージが表示されます(例:式エラー:表のxx列が見つかりませんでした)。 以下の例では、変数 "Filter"(=列名)は列 "B"に設定され、ステップ# "フィルタ行"で「1」を含む行をフィルタリングするために使用されます。しかし結果は行が表示されないことです。 何が原因なのか、どのように解決するのでしょうか?おそらく変数に特別なデータ型が必要なのでしょうか?Power Queryの列名を変数で置き換えて行をフィルタリングする方法はありますか?

ありがとうございます!

表: Table to be filtered

コード:

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" 

答えて

1

#"Filter"が値 "B" であるので、条件が常にfalseを返します。 Table.SelectRowsの2番目のパラメータは、テーブルの現在の行をレコードとして渡す関数をとります。あなたは、列を指定する変数を使用するには、次のいずれかの操作を行うことができます

= 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"が参照する列の現在の行の値を取得します。

+0

素晴らしい!それは動作します。どうもありがとう! – AndreK

+0

@AndreKこの回答がうまくいけば、それを受け入れられた回答としてマークすることができますか? –

関連する問題