Создание и вызов пользовательской функции

Применяется к
Excel для Microsoft 365 Excel 2019 Excel 2016 Excel 2013 Excel 2010

Пользовательская функция использует язык формул M, принимает набор входных значений, а затем возвращает одно выходное значение. Если вы хотите использовать логику многократно или применять один и тот же набор преобразований к другому запросу или значению, рекомендуется создать пользовательскую функцию и вызывать ее там, где и когда это необходимо. Существует несколько способов создания пользовательской функции:

Создайте и вызовите простую пользовательскую функцию с помощью расширенного редактора

Ниже приведен простой пример пользовательской функции, которая следует давней традиции программирования.

  1. Чтобы создать пустой запрос, выполните следующие действия.

    Excel Выбор данных>Получение данных>из других источников>Пустой запрос.

    Power Query Щелкните правой кнопкой мыши пустое место в области "Запросы" слева и выберите "Создать запрос>""Другие источники>", "Пустой запрос".

  2. В области запросов слева дважды щелкните имя и переименуйте новый пустой запрос в "HelloWorld".

  3. Выберите новый запрос и нажмите «ГлавнаяРасширенный> редактор».

  4. Замените начальный код шаблона следующим кодом:
    let
         HelloWorld = () => ("Hello World")
    in
         HelloWorld

  5. Нажмите кнопку Готово.

  6. Вы изменили запрос "HelloWorld" на пользовательскую функцию. Обратите внимание на значок функции Значок функции слева от него.

  7. Чтобы вызвать функцию, выберите ее, а затем выберите "Вызов " в режиме предварительного просмотра данных.

    Вызов пользовательской функции HelloWorld

  8. Результаты выполнения функции отображаются в предварительном просмотре данных и добавляются в область "Запросы " в виде запроса с именем по умолчанию "Вызванная функция". Возможно, вам потребуется переименовать его во что-то более понятное, например "HelloWorldResult".

  9. Выберите этот запрос и нажмите "Главная>"Закрыть & Загрузить, чтобы просмотреть результаты на листе.

Результаты

Результаты HelloWorld на листе

Создайте и вызовите пользовательскую функцию с параметром в расширенном редакторе

В следующем примере показано, как передать в пользовательскую функцию параметр для преобразования десятичного числа в шестнадцатеричное.

  1. Чтобы создать пустой запрос, выполните следующие действия.

    Excel Выбор данных>Получение данных>из других источников>Пустой запрос.

    Power Query Щелкните правой кнопкой мыши пустое место в области "Запросы" слева и выберите "Создать запрос>""Другие источники>", "Пустой запрос".

  2. В области "Запросы " слева переименуйте новый пустой запрос в "MyHex".

  3. Выберите новый запрос и нажмите «ГлавнаяРасширенный> редактор».

  4. Замените начальный код шаблона следующим кодом:
    let
         MyHex = (parameter1) => Number.ToText(parameter1,"X")
    in
         MyHex

  5. Нажмите кнопку Готово.

  6. Вы изменили запрос MyHex на пользовательскую функцию. Обратите внимание на значок функции Значок функции слева от него.

  7. Чтобы вызвать функцию, выберите ее, а затем в режиме предварительного просмотра данных введите число в поле parameter1 и нажмите кнопку Invoke.
    Вызов пользовательской функции MyHex

  8. Результаты выполнения функции отображаются в режиме предварительного просмотра данных и добавляются в область "Запросы " как запрос с именем по умолчанию " Вызванная функция". Возможно, потребуется переименовать его во что-то более понятное, например "MyHexResult".

  9. Выберите этот запрос и нажмите "Главная>"Закрыть & Загрузить, чтобы просмотреть результаты на листе.

Результаты

Результат функции MyHex на листе

Добавление столбца с помощью настраиваемой функции

Если создана функция с хотя бы одним параметром, ее можно вызвать как пользовательскую функцию, чтобы создать новый столбец и новое значение для каждой строки таблицы.

  1. Чтобы открыть запрос, найдите запрос, ранее загруженный из редактора Power Query, выберите ячейку в данных, а затем выберите "Редактировать запрос>". Дополнительные сведения см. в статье Создание, изменение и загрузка запроса в Excel (Power Query).

    Примечание В этом примере запросу требуется по крайней мере один столбец типа данных "Целое число ".

  2. Создайте пользовательскую функцию MyHex, как описано в разделе «Создание и вызов пользовательской функции с параметром в расширенном редакторе».

  3. В запросе выберите Add Column>Invoke Custom Function. Откроется диалоговое окно "Вызов настраиваемой функции ".

  4. Введите новое имя столбца, например "HexConvert", в поле " Новое имя столбца ".

  5. Выберите имя предопределенной пользовательской функции в раскрывающемся списке запросов функций. В этом примере выберите "MyHex".

  6. Поскольку пользовательская функция ссылается на параметр, он теперь отображается.

  7. Выберите столбец типа данных "Целое число " в качестве параметра функции.

    Диалоговое окно вызова настраиваемой функции

  8. Нажмите кнопку ОК.

Результат

Создается новый столбец, в котором показано шестнадцатеричное значение столбца целого числа, введенного в качестве параметра.

Новый столбец значений MyHex на листе

См. также

Справка по Power Query для Excel

Создание формул Power Query в Excel

Создание запроса с параметрами

Управление запросами

Общие сведения о функциях Power Query M (docs.com)

Использование пользовательских функций (docs.com)