Обновите функцию PowerQuery, чтобы она возвращала данные из именованного столбца и строки таблицы, а не только из строки в указанном столбце c - PullRequest
0 голосов
/ 02 марта 2020

У меня есть некоторый код M, который возвращает значение из указанной строки в именованной таблице в Excel (называемое fParameters ):

let Parameter=(TableName,RowNumber) =>
    let
        Source = Excel.CurrentWorkbook(){[Name=TableName]}[Content],
        value = Source{RowNumber-1}[Value]
    in
        value
in Parameter  

Я использую функцию для установки где я хочу загрузить необработанные данные из:

Source = Excel.Workbook(File.Contents(fParameters("Parameters",1) & fParameters("Parameters",4)),null, true),
S1_Sheet = Source{[Item="S1",Kind="Sheet"]}[Data],

Приведенный выше код рассмотрит строки 1 и 4 таблицы Parameters , чтобы получить исходный файл. Затем он получит данные из рабочего листа S1 этого исходного файла.

Проблема:
Я хотел бы изменить функцию, чтобы я мог изменить имя столбца, на который он смотрит. На данный момент он смотрит на столбец [Value]. Я попытался добавить ColumnName в качестве третьего параметра для функции, но не могу заставить его посмотреть на этот столбец - в лучшем случае он ищет столбец с именем ColumnName.

let Parameter=(TableName,RowNumber,ColumnName) =>
    let
        Source = Excel.CurrentWorkbook(){[Name=TableName]}[Content],
        value = Source{RowNumber-1}[ColumnName]
    in
        value
in Parameter  

Я пробовал варианты с фигурными скобками, но не могу заставить его работать. Может ли кто-нибудь указать мне правильное направление, пожалуйста?

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Один из способов сделать это - просто выбрать столбец и затем обратиться к строке

let Parameter=(TableName,RowNumber,ColumnName) =>
    let
        Source = Excel.CurrentWorkbook(){[Name=TableName]}[Content],
        SelectColumn = Table.SelectColumns(Source, ColumnName),
        SelectValue = SelectColumn{RowNumber-1}
    in
        SelectValue
in Parameter
1 голос
/ 02 марта 2020

Попробуйте

(TableName,RowNumber,ColumnName) =>
let
Source = Excel.CurrentWorkbook(){[Name=TableName]}[Content],
value = Table.Column(Source,ColumnName){RowNumber-1}
in value
...