1. Главная страница
  2. ››
  3. Формулы
  4. ››
  5. REDUCE • сокращаем массив до числа - Upline Studio

REDUCE • сокращаем массив до числа - Upline Studio

Команда

REDUCE

Перевод на русский

Сократить.

Описание

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

Другими словами, функция REDUCE используется для преобразования массива в единственное значение, используя заданную функцию. Функция, которую вы передаете в REDUCE, применяется к каждому элементу массива по очереди, а результат каждого применения затем используется в следующем вызове функции, вместе со следующим элементом массива.

Тип функции

Работа с массивами / Array

Синтаксис

На русском: команда не имеет эквивалента на русском языке.

REDUCE(начальное_значение; массив_или_диапазон; LAMBDA)
Замечание для новичков
Выбор запятой или точки c запятой между аргументами формулы определяется не тем, на каком языке записана команда, а языковой версией Google Таблиц как таковых. Если у вас русскоязычные Google Таблицы, то команду вы можете записать и на русском, и на английском языке — Google Таблицы её просто сами переведут. Но вот разделителем должна быть точка с запятой, иначе вы получите синтаксическую ошибку.

На английском

REDUCE(initial_value, array_or_range, LAMBDA)

Пояснения:

REDUCE(начальное_значение, массив_или_диапазон, LAMBDA)

  • начальное_значение — начальное значение в сумматоре.
  • массив_или_диапазон — массив или диапазон, который необходимо преобразовать.
  • LAMBDA — лямбда-функция, которая применяется к каждому значению в массиве или диапазоне с целью преобразования.
  • Синтаксис: LAMBDA(имя1; имя2; формула)
  • Требования:
    • Лямбда-функция должна иметь ровно два аргумента "имя", а также формулу, в которой эти имена используются. При применении лямбда-функции аргумент "имя1" определяет текущее значение в сумматоре, а аргумент "имя2" определяет текущие значения в массиве или диапазоне. На каждом этапе сумматор обновляется до промежуточного значения, полученного на предыдущем этапе. Изучите простой пример умножения.

Примечания

  • Переданная лямбда-функция должна принимать ровно два аргумента "имя", в противном случае возникает ошибка #N/A. Эти аргументы относятся к сумматору и текущему значению в порядке следования. Что означает каждый аргумент:
    • имя1 — определяет текущее значение в сумматоре.
    • имя2 — определяет текущие значения во входном массиве.
  • Сумматор запускается с начальным значением и на каждом этапе обновляется до промежуточного значения, полученного на предыдущем этапе.
  • Пока применяется лямбда-функция, текущие значения во входном массиве определяются построчно.
  • Именованная функция может выступать в качестве параметра лямбда-функции и в этом случае обладает всеми ее свойствами. Подробнее об именованных функциях
    • При наличии именованной функции для функции REDUCE должен использоваться синтаксис LAMBDA, т. е. ей должно быть назначено два тега аргумента.
    • После именованной функции не должно быть круглых скобок.

Пример использования

REDUCE(5; A1:A3; LAMBDA(сумматор; текущее_значение; сумматор+текущее_значение))

REDUCE(2; A1:A3; LAMBDA(сумматор; текущее_значение; сумматор*текущее_значение))

Примеры решения задач

Простая операция умножения

Точная задача: показать произведение всех элементов в A2:A4 и начального значения.

Иллюстрация использования функции REDUCE в Google Таблицах.

Иллюстрация использования функции REDUCE в Google Таблицах.

Формула из примера в ячейке B2: 

=REDUCE(5; A2:A4; LAMBDA(сумматор; текущее_значение; сумматор*текущее_значение))

Как это работает

Изначально сумматор = 5

  1. Обработка ячейки A1:

сумматор= 5


После обработки ячейки A1:

сумматор= (возвращаемое значение LAMBDA)= 5*3= 15


  1. Обработка ячейки A2:

сумматор= 15


После обработки ячейки A2:

сумматор= (возвращаемое значение LAMBDA)= 15*2= 30


  1. Обработка ячейки A3:

сумматор= 30


После обработки ячейки A3:

сумматор= (возвращаемое значение LAMBDA)= 30*4= 120


Результат:

120


Прибавить цены больше или равные 20 рублям

Точная задача: Прибавить все цены, которые больше 20 рублей или равные им.

Иллюстрация использования функции REDUCE в Google Таблицах. **Прибавляем цены больше или равные 20 рублям**

Иллюстрация использования функции REDUCE в Google Таблицах. Прибавляем цены больше или равные 20 рублям

Формула из примера в ячейке B2:

 =REDUCE(0; A2:A5; LAMBDA(сумматор; цена; ЕСЛИ(цена>=20; сумматор + цена; сумматор)))


Именованная фукнция как лямбда-функция

Точаная задача: Использование именованной функции в качестве лямбда-функции. Возврат конечной цены после ее поэтапного повышения на определенный процент

Создать английскую копию

Пример данных:

screenshot01

Пример формулы: =REDUCE(C2,B1:B4,PRICE_INCREASE)

Именованная функция PRICE_INCREASE выводит результат повышения цены на процентное значение из колонки B.

Определение формулы: =сумматор+сумматор*ячейка, где сумматор и ячейка – теги аргументов, назначенных функции PRICE_INCREASE.

Результат:

133,4


Именованная фукнция с двумерным набором данных

Точная задача: Использование именованной функции в качестве лямбда-функции с двумерным набором данных. Составление списка лучших сотрудников квартала с сохранением порядка строк.

Создать английскую копию

Пример данных:

screenshot02

Именованная функция ADD_IF_NOT_PRESENT добавляет значение выбранной строки в массив значений.

Определение функции: =IF(CONTAINS(новое_значение, существующие_значения), существующие_значения, {существующие_значения, новое_значение}), где существующие_значения и новое_значение – теги аргументов, заданные в указанном порядке для функции ADD_IF_NOT_PRESENT, а CONTAINS – ещё одна именованная функция.

Пример формулы: =REDUCE({B2}, B2:E4, ADD_IF_NOT_PRESENT)

Результат:

screenshot03

Распространенные ошибки

  1. Переданная лямбда-функция не имеет ровно два аргумента "имя"

    Если лямбда-функция не имеет ровно два аргумента "имя", возникает следующая ошибка:

    "Неверное количество аргументов лямбда-функции: 2 вместо 3".

    Пример: =REDUCE(5, C1:C4, LAMBDA(текущее_значение, текущее_значение+1))

    В этом примере для лямбда-функции задан только один аргумент "имя" при требуемых двух.

  2. Последний параметр функции REDUCE не является лямбда-функцией

    Если последний параметр функции REDUCE не является лямбда-функцией, возникает следующая ошибка:

    "Аргумент должен быть лямбда-функцией".

    Пример: =REDUCE(5, C1:C4, 3)

    В этом примере последней функцией является 3, а не лямбда-функция.

  3. Лямбда-функция, переданная функции REDUCE, неверна

    Если один или несколько аргументов "имя" недействительны, возникает следующая ошибка:

    "Аргумент 1 лямбда-функции является недопустимым именем".

    Пример: =REDUCE(5, C1:C4, LAMBDA(C1, v, C1+v))

    В этом примере С1 является недопустимым именем, поскольку конфликтует с диапазоном.

Сопутствующие функции

Другие функции Google Таблиц

Список функций

Другие примеры именованных функций

MAKEARRAY »

MAP »

SCAN »

Источники

Google Sheets function list (на английском)

Список функций Google Таблиц (на русском)

Функция REDUCE

Logo Upline Studio Creatium

Наша команда Uplinestudio разрабатывает сайты под разные потребности клиентов. Одним из ключевых направлений в нашей разработке является создание сайтов на Creatium.

Оставить заявку

Работает на Creatium