2017-05-17 1 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의 두 번째 매개 변수는 테이블의 현재 행을 레코드로 전달하는 함수를 사용합니다. 당신은 열을 지정하는 변수를 사용하려면 다음 중 하나를 수행 할 수

= 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이 대답이 효과가 있다면 허용 된 답변으로 표시 할 수 있습니까? –

관련 문제