Этот сайт использует Яндекс.Метрику для анализа посещаемости. Подробнее
Формулы и функции

Создание пользовательских функций LAMBDA в Excel: от простых формул до рекурсии

forest_paw 06.09.2025 40

Создание пользовательских функций ЛЯМБДА (LAMBDA) в Excel: от простых формул до рекурсии

Функция ЛЯМБДА (LAMBDA) в Excel открывает новые горизонты для создания пользовательских функций без программирования. Это руководство покажет, как превращать сложные формулы в переиспользуемые блоки, работать с типами данных и даже реализовывать рекурсивные алгоритмы.

Функция ЛЯМБДА (LAMBDA) позволяет вам создавать собственные, именованные формулы, которые можно использовать в любой книге, значительно повышая эффективность работы.

Объединение подформул в одну ЛЯМБДА (LAMBDA)

Часто сложную формулу проще построить поэтапно. Рассмотрим задачу: менеджер просит рассчитать продажи на один рабочий день по данным за 2028 год.

Колонка A содержит названия месяцев (Январь, Февраль, Март). Колонка B — общие продажи за месяц, например, 47654. Цель — рассчитать продажи на рабочий день, предполагая, что год — 2028.
Колонка A содержит названия месяцев (Январь, Февраль, Март). Колонка B — общие продажи за месяц, например, 47654. Цель — рассчитать продажи на рабочий день, предполагая, что год — 2028.

Логику можно разбить на шаги:

  1. Преобразовать название месяца в дату начала месяца.
  2. Использовать КОНМЕСЯЦА (EOMONTH) для получения последнего дня месяца.
  3. Использовать ЧИСТРАБДНИ (NETWORKDAYS) для подсчета рабочих дней (понедельник-пятница).
  4. Разделить продажи на количество рабочих дней.
Шаг 1: Преобразовать месяц в дату начала месяца с помощью =DATEVALUE(A4&
Шаг 1: Преобразовать месяц в дату начала месяца с помощью =ДАТАЗНАЧ (DATEVALUE)(A4&" 1, 2028"). Шаг 2: Использовать КОНМЕСЯЦА (EOMONTH)( ,0) для получения конца месяца. Шаг 3: Использовать ЧИСТРАБДНИ (NETWORKDAYS) для подсчета дат с понедельника по пятницу. Шаг 4: Разделить Продажи на Чистые Рабочие Дни.

Раньше пришлось бы использовать одну супер-формулу. С функцией LET (LET) стало проще переиспользовать логику. Но надстройка Excel Labs и её функция Import from Grid упрощают создание ЛЯМБДА (LAMBDA) до нескольких кликов.

  1. Создайте систему подформул на листе.
  2. Выделите ячейку с исходными данными, подформулы и итоговый результат.
  3. Установите надстройку Excel Labs и откройте её с панели инструментов.
  4. В разделе Advanced Formula Environment выберите ModulesImport from Grid.
В верхней части панели Excel Labs выберите Modules. Во второй строке панели третья иконка — Import From Grid.
В верхней части панели Excel Labs выберите Modules. Во второй строке панели третья иконка — Import From Grid.

Надстройка автоматически определит диапазон вычислений и параметры. После нажатия Preview вы увидите предлагаемую ЛЯМБДА (LAMBDA)-функцию, которую можно сохранить в диспетчере имен.

Предлагаемое имя функции Sales_Per_Day взято из заголовка над итоговой ячейкой. Формула имеет вид =LAMBDA(Month, Sales, LET(FirstOfMonth, DateValue(Month &
Предлагаемое имя функции Sales_Per_Day взято из заголовка над итоговой ячейкой. Формула имеет вид =ЛЯМБДА (LAMBDA)(МЕСЯЦ (Month), Sales, LET (LET)(FirstOfMonth, ДАТАЗНАЧ (DateValue)(МЕСЯЦ (Month) & " 1, 2028"), EndOfMonth, КОНМЕСЯЦА (EOMONTH)(FirstOfMonth, 0), Workdays, ЧИСТРАБДНИ (NETWORKDAYS)(FirstOfMonth, EndOfMonth), Sales/Workdays)).

После сохранения функцию Sales_Per_Day можно использовать как любую встроенную: =Sales_Per_Day(А4,Б4) (=Sales_Per_Day(A4,B4)). Логика хранится в диспетчере имен и переносится вместе с книгой.

Использование ЛЯМБДА (LAMBDA) с типами данных

ЛЯМБДА (LAMBDA) идеально работает с типами данных (Geography, Stocks). Например, у вас есть пары городов. Преобразуйте их в тип данных Geography на вкладке Данные.

A2 содержит тип данных для Кливленда, Огайо. B2 — для Орландо, Флорида. Формула =MILES(A2,B2) возвращает расстояние между городами в милях. Формула, присвоенная имени MILES, вычисляет расстояние по широте и долготе.
A2 содержит тип данных для Кливленда, Огайо. B2 — для Орландо, Флорида. Формула =MILES(A2,B2) возвращает расстояние между городами в милях. Формула, присвоенная имени MILES, вычисляет расстояние по широте и долготе.

Сложная формула для расчета расстояния по широте и долготе оборачивается в ЛЯМБДА (LAMBDA) и сохраняется под именем MILES. После этого расчет сводится к простой формуле =MILES(А2,Б2) (=MILES(A2,B2)). Такие функции можно копировать между книгами, создавая библиотеку корпоративных решений.

Бонус: Рекурсивная ЛЯМБДА (LAMBDA) для "слаггификации" текста

ЛЯМБДА (LAMBDA) может вызывать саму себя, что позволяет реализовать рекурсию. Рассмотрим задачу преобразования заголовка статьи в URL-слаг (только строчные буквы a-z, цифры 0-9 и дефисы).

Обычный подход с множеством функций ПОДСТАВИТЬ (SUBSTITUTE) громоздок. Рекурсивная ЛЯМБДА (LAMBDA) решает это одной функцией.

  1. Функция SLUGIFY принимает фразу и начальный индекс (1).
  2. Проверяет, не обработан ли уже весь текст.
  3. Извлекает текущий символ, проверяет, является ли он буквой или цифрой.
  4. Заменяет недопустимые символы на дефис.
  5. Рекурсивно вызывает себя для следующего символа.
  6. По завершении заменяет множественные дефисы на один.
=ЛЯМБДА(phrase, ndx,
    ЕСЛИ(ndx > ДЛСТР(phrase),
        ПОДСТАВИТЬ(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(phrase, "-", " ")), " ", "-"),
        SLUGIFY(
            LET(
                СИМВОЛ, СТРОЧН(ПСТР(phrase, ndx, 1)),
                charcode, КОДСИМВ(СИМВОЛ),
                ЛЕВСИМВ(phrase, ndx - 1) &
                ЕСЛИ(ИЛИ(И(charcode > 96, charcode < 123), И(charcode > 47, charcode < 58)), СИМВОЛ, "-") &
                ПРАВСИМВ(phrase, ДЛСТР(phrase) - ndx)
            ),
            ndx + 1
        )
    )
) (=LAMBDA(phrase, ndx,
    IF(ndx > LEN(phrase),
        SUBSTITUTE(TRIM(SUBSTITUTE(phrase, "-", " ")), " ", "-"),
        SLUGIFY(
            LET(
                char, LOWER(MID(phrase, ndx, 1)),
                charcode, CODE(char),
                LEFT(phrase, ndx - 1) &
                IF(OR(AND(charcode > 96, charcode < 123), AND(charcode > 47, charcode < 58)), char, "-") &
                RIGHT(phrase, LEN(phrase) - ndx)
            ),
            ndx + 1
        )
    )
))
Функция SLUGIFY преобразует 'Why I say 'Bazinga!' - my #1 Reason for Using =INDEX(MATCH())!!' в 'why-i-say-bazinga-my-1-reason-for-using-index-match'.
Функция SLUGIFY преобразует 'Why I say 'Bazinga!' - my #1 Reason for Using =ИНДЕКС (INDEX)(ПОИСКПОЗ (MATCH)())!!' в 'why-i-say-bazinga-my-1-reason-for-using-ИНДЕКС (index)-ПОИСКПОЗ (match)'.

Эту функцию нужно сохранить в Диспетчере имен. После этого её можно использовать как обычную формулу: =SLUGIFY(А2, 1) (=SLUGIFY(A2, 1)).

Заключение

Функция ЛЯМБДА (LAMBDA) — это мощный инструмент, который превращает Excel в платформу для создания пользовательской логики. Вы можете:

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

Освоение ЛЯМБДА (LAMBDA) открывает путь к созданию библиотек корпоративных функций, повышающих стандартизацию и производительность работы с данными.

Поделиться:

Похожие статьи

Генерация всех комбинаций с помощью функции BASE в Excel
Читать
Определение страны по телефонному номеру в Excel с помощью формулы
Читать
Пользовательские форматы чисел в Excel: полное руководство
Читать

Мы используем cookies для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с политикой использования cookies.