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

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

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

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

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

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

    Excel Выберите Data>Get Data Get DataFrom Other Sources Blank Query (Получение данных >из других источников>пустой запрос).

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

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

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

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

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

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

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

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

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

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

Результаты

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

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

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

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

    Excel Выберите Data>Get Data Get DataFrom Other Sources Blank Query (Получение данных >из других источников>пустой запрос).

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

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

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

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

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

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

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

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

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

Результаты

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

Добавление столбца путем вызова пользовательской функции

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

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

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

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

  3. В запросе выберите Добавитьнастраиваемую функцию вызовастолбца>. Откроется диалоговое окно Вызов пользовательской функции .

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

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

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

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

    Диалоговое окно

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

Результат

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

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

См. также

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

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

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

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

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

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