Функция MAP в Excel «сопоставляет» пользовательскую функцию LAMBDA с каждым значением в предоставленном массиве. LAMBDA применяется к каждому значению, а результатом MAP является массив результатов тех же размеров, что и исходный массив.
Что делает функция MAP в Excel?
Функция MAP в Excel сопоставляет массив с пользовательской функцией.
Возвращаемое значение
Массив результатов.
Аргументы
- array1 — Массив, который будет отображен.
- array2 — [необязательно] Дополнительные массивы, необходимые LAMBDA.
- lambda — применяемая пользовательская функция LAMBDA.
Синтаксис
=MAP(array1, [array2], …, lambda)
Примечания по использованию
Функция MAP «сопоставляет» пользовательскую функцию LAMBDA с каждым значением в предоставленном массиве. LAMBDA применяется к каждому значению, а результатом MAP является массив результатов тех же размеров, что и исходный массив.
Функция MAP полезна, когда вы хотите обработать каждый элемент массива индивидуально, а не как операцию с массивом, которая дает результат массива. MAP также полезен, когда логика формулы сложна и лучше всего управлять ею в одном месте. Используя именованную функцию LAMBDA с MAP, можно повторно использовать тот же код в другом месте.
Функция MAP принимает два обязательных аргумента: массив1 и лямбда. Array1 — это массив, который необходимо сопоставить. Lambda — это пользовательская лямбда-функция, которую следует запускать для каждого элемента массива array1. Дополнительные аргументы могут быть добавлены в форме array2, array3 и т. д. перед лямбда-выражением, которое всегда должно быть последним предоставленным аргументом.
Если для MAP предоставляются дополнительные массивы, функцию LAMBDA необходимо настроить на прием дополнительных аргументов. Array1 должен быть первым аргументом в LAMBDA, array2 должен быть вторым аргументом и т. д.
Примеры
Функция MAP сопоставляет каждое значение массива с пользовательской функцией LAMBDA. Например, формула ниже отображает функцию LAMBDA, которая просто добавляет 1 к каждому элементу предоставленного массива:
=MAP({1,2,3},LAMBDA(a,a+1)) // возвращает {2,3,4}
Переменная a, переданная в функцию LAMBDA в качестве первого аргумента, равна array1 в функции MAP.
Удалить нечисловые значения
На листе, показанном выше, MAP используется для удаления нечисловых значений из предоставленного массива (B5:D16). Формула в F5:
=MAP(B5:D16,LAMBDA(a,IF(ISNUMBER(a),+a,"")))
Поскольку array1 имеет 12 строк и 3 столбца, результатом MAP является массив 12 x 3, который попадает в диапазон F5:H16.
Примечание. Обозначение +a используется для того, чтобы заставить Excel преобразовать a из ссылки на диапазон в массив значений. Без + MAP вернет #CALC! ошибка. Этот шаг иногда необходим при работе с формулами массива, которые разливаются.
Дополнительные массивы
MAP может принимать дополнительные массивы, которые LAMBDA может использовать во время вычислений. Приведенная ниже формула добавляет каждый элемент массива array1 к соответствующему элементу массива array2 :
=MAP({1,2,3},{1,2,3},LAMBDA(a,b,a+b)) // возвращает {2,4,6}
Здесь переменная a, заданная функции LAMBDA, — это array1 в функции MAP, а b — это array2.
Когда использовать MAP
Механизм динамических массивов в Excel может самостоятельно обрабатывать многие операции с массивами без такой функции, как MAP. Например, обе формулы ниже возвращают один и тот же результат:
=array+1
=MAP(array,LAMBDA(a,a+1))
Таким образом, нет особой причины использовать MAP, если собственная операция с массивом приведет к тому же результату. Однако есть случаи, когда MAP может быть полезен:
- Для запуска логических тестов с помощью функций AND и OR. Эти функции объединяют массивы в одно значение, поэтому обычно их можно использовать в операциях с массивами, которым необходимо поддерживать несколько значений.
- Для выполнения определенных агрегатных операций над несколькими массивами, т.е.
=MAP(rng1,rng2,rng3,LAMBDA(a,b,c,MAX(a,b,c)))
- Чтобы выполнить функцию, которая в противном случае не произойдет.
Примечание. Функция MAP возвращает массив результатов.