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


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

сумматор= 15


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

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


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

сумматор= 30


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

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


Результат:

120


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

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

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

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

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


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

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

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

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

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

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

Результат:

133,4


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

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

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

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

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

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

Результат:

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

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

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

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

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

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

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

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

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

  1. Лямбда-функция, переданная функции REDUCE, неверна
  2. Если один или несколько аргументов "имя" недействительны, возникает следующая ошибка:

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

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

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

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

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

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

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

MAP »

Источники

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

 

Logo Upline Studio Creatium

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

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

Работает на Creatium