Пользовательская функция использует язык формул M, принимает набор входных значений, а затем возвращает одно выходное значение. Если у вас есть логика, которую вы хотите многократно использовать или применить один и тот же набор преобразований к другому запросу или значению, рассмотрите возможность создания пользовательской функции и последующего вызова функции в нужное время. Существует несколько способов создания пользовательской функции:
- Используйте Расширенный редактор, чтобы добавить собственный оператор let и начать с нуля.
- Используйте команду Вызов пользовательской функции .
- Существуют дополнительные способы создания функций, которые не рассматриваются в этом разделе справки, включая команды Create Function (Создать функцию ) и Add as a Query (Добавить как запрос ). Подробное обсуждение см. в разделах Общие сведения о функциях Power Query M (docs.com) и Использование пользовательских функций (docs.com).
Создание и вызов простой пользовательской функции с помощью Расширенный редактор
Ниже приведен простой пример пользовательской функции, которая следует давней традиции программирования.
Чтобы создать пустой запрос, выполните приведенные далее действия.
Excel Выберите Data>Get Data Get DataFrom Other Sources Blank Query (Получение данных >из других источников>пустой запрос).
Power Query щелкните правой кнопкой мыши пустое место в области Запросы слева, а затем выберите Создать запрос>Другие источники>Пустой запрос.
В области Запросы слева дважды щелкните имя, а затем переименуйте новый пустой запрос в HelloWorld.
Выберите новый запрос и выберите Главная>Расширенный редактор.
Замените начальный код шаблона следующим кодом:
let
HelloWorld = () => ("Hello World")
in
HelloWorldНажмите кнопку Готово.
Вы изменили запрос HelloWorld на пользовательскую функцию. Обратите внимание на
слева от него.Чтобы вызвать функцию, выберите ее, а затем выберите Вызов в режиме предварительного просмотра данных.
Результаты функции отображаются в режиме предварительного просмотра данных и добавляются в область Запросы в виде запроса с именем по умолчанию Invoked Function. Вы можете переименовать его в более понятное, например HelloWorldResult.
Выберите этот запрос, а затем выберите Главная>Закрыть & Загрузить , чтобы просмотреть результаты на листе.
Результаты
Создайте и вызовите пользовательскую функцию, которая имеет параметр с Расширенный редактор
В следующем примере показано, как передать параметр в пользовательскую функцию для преобразования десятичного числа в шестнадцатеричное.
Чтобы создать пустой запрос, выполните приведенные далее действия.
Excel Выберите Data>Get Data Get DataFrom Other Sources Blank Query (Получение данных >из других источников>пустой запрос).
Power Query щелкните правой кнопкой мыши пустое место в области Запросы слева, а затем выберите Создать запрос>Другие источники>Пустой запрос.
В области Запросы слева переименуйте новый пустой запрос в "MyHex".
Выберите новый запрос и выберите Главная>Расширенный редактор.
Замените начальный код шаблона следующим кодом:
let
MyHex = (parameter1) => Number.ToText(parameter1,"X")
in
MyHexНажмите кнопку Готово.
Вы изменили запрос MyHex на пользовательскую функцию. Обратите внимание на
слева от него.Чтобы вызвать функцию, выберите ее, а затем в разделе Предварительный просмотр данных введите число в поле parameter1 и выберите Вызов.
Результаты функции отображаются в режиме предварительного просмотра данных и добавляются в область Запросы в виде запроса с именем по умолчанию Invoked Function. Вы можете переименовать его в более понятное, например MyHexResult.
Выберите этот запрос, а затем выберите Главная>Закрыть & Загрузить , чтобы просмотреть результаты на листе.
Результаты
Добавление столбца путем вызова пользовательской функции
Если вы создали функцию с хотя бы одним параметром, ее можно вызвать как пользовательскую функцию для создания нового столбца и нового значения для каждой строки таблицы.
Чтобы открыть запрос, найдите ранее загруженный из Редактор Power Query, выберите ячейку в данных, а затем выберите Изменить запрос>. Дополнительные сведения см. в статье Создание, изменение и загрузка запроса в Excel (Power Query).
Примечание В этом примере запросу требуется по крайней мере один столбец типа данных Whole Number .
Создайте пользовательскую функцию MyHex, как описано в разделе Создание и вызов настраиваемой функции с параметром с Расширенный редактор.
В запросе выберите Добавитьнастраиваемую функцию вызовастолбца>. Откроется диалоговое окно Вызов пользовательской функции .
Введите имя нового столбца, например "HexConvert", в поле Имя нового столбца .
Выберите имя предварительно определенной пользовательской функции в раскрывающемся списке Запрос функции. В этом примере выберите "MyHex".
Так как пользовательская функция ссылается на параметр, параметр теперь отображается.
Выберите столбец типа данных Whole Number в качестве параметра функции.
Нажмите кнопку ОК.
Результат
Создается новый столбец с шестнадцатеричным значением столбца Whole Number, введенного в качестве параметра.
См. также
Справка по Power Query для Excel
Создание формул Power Query в Excel
Создание запроса с параметрами