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