Создание пользовательских функций ЛЯМБДА (LAMBDA) в Excel: от простых формул до рекурсии
Функция ЛЯМБДА (LAMBDA) в Excel открывает новые горизонты для создания пользовательских функций без программирования. Это руководство покажет, как превращать сложные формулы в переиспользуемые блоки, работать с типами данных и даже реализовывать рекурсивные алгоритмы.
Функция ЛЯМБДА (LAMBDA) позволяет вам создавать собственные, именованные формулы, которые можно использовать в любой книге, значительно повышая эффективность работы.
Объединение подформул в одну ЛЯМБДА (LAMBDA)
Часто сложную формулу проще построить поэтапно. Рассмотрим задачу: менеджер просит рассчитать продажи на один рабочий день по данным за 2028 год.
Логику можно разбить на шаги:
- Преобразовать название месяца в дату начала месяца.
- Использовать
КОНМЕСЯЦА (EOMONTH)для получения последнего дня месяца. - Использовать
ЧИСТРАБДНИ (NETWORKDAYS)для подсчета рабочих дней (понедельник-пятница). - Разделить продажи на количество рабочих дней.
Раньше пришлось бы использовать одну супер-формулу. С функцией LET (LET) стало проще переиспользовать логику. Но надстройка Excel Labs и её функция Import from Grid упрощают создание ЛЯМБДА (LAMBDA) до нескольких кликов.
- Создайте систему подформул на листе.
- Выделите ячейку с исходными данными, подформулы и итоговый результат.
- Установите надстройку Excel Labs и откройте её с панели инструментов.
- В разделе Advanced Formula Environment выберите Modules → Import from Grid.
Надстройка автоматически определит диапазон вычислений и параметры. После нажатия Preview вы увидите предлагаемую ЛЯМБДА (LAMBDA)-функцию, которую можно сохранить в диспетчере имен.
После сохранения функцию Sales_Per_Day можно использовать как любую встроенную: =Sales_Per_Day(А4,Б4) (=Sales_Per_Day(A4,B4)). Логика хранится в диспетчере имен и переносится вместе с книгой.
Использование ЛЯМБДА (LAMBDA) с типами данных
ЛЯМБДА (LAMBDA) идеально работает с типами данных (Geography, Stocks). Например, у вас есть пары городов. Преобразуйте их в тип данных Geography на вкладке Данные.
Сложная формула для расчета расстояния по широте и долготе оборачивается в ЛЯМБДА (LAMBDA) и сохраняется под именем MILES. После этого расчет сводится к простой формуле =MILES(А2,Б2) (=MILES(A2,B2)). Такие функции можно копировать между книгами, создавая библиотеку корпоративных решений.
Бонус: Рекурсивная ЛЯМБДА (LAMBDA) для "слаггификации" текста
ЛЯМБДА (LAMBDA) может вызывать саму себя, что позволяет реализовать рекурсию. Рассмотрим задачу преобразования заголовка статьи в URL-слаг (только строчные буквы a-z, цифры 0-9 и дефисы).
Обычный подход с множеством функций ПОДСТАВИТЬ (SUBSTITUTE) громоздок. Рекурсивная ЛЯМБДА (LAMBDA) решает это одной функцией.
- Функция
SLUGIFYпринимает фразу и начальный индекс (1). - Проверяет, не обработан ли уже весь текст.
- Извлекает текущий символ, проверяет, является ли он буквой или цифрой.
- Заменяет недопустимые символы на дефис.
- Рекурсивно вызывает себя для следующего символа.
- По завершении заменяет множественные дефисы на один.
=ЛЯМБДА(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(А2, 1) (=SLUGIFY(A2, 1)).
Заключение
Функция ЛЯМБДА (LAMBDA) — это мощный инструмент, который превращает Excel в платформу для создания пользовательской логики. Вы можете:
- Упаковывать сложные формулы в переиспользуемые функции.
- Работать с типами данных для решения специализированных задач.
- Реализовывать рекурсивные алгоритмы, ранее доступные только в языках программирования.
Освоение ЛЯМБДА (LAMBDA) открывает путь к созданию библиотек корпоративных функций, повышающих стандартизацию и производительность работы с данными.