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

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

Команда

REDUCE

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

Сократить.

Описание

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

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

Тип функции

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

Синтаксис

На русском

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

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

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(сумматор, текущее_значение, сумматор*текущее_значение))

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

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

Показать произведение всех элементов в A1:A3 и начального значения.

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

Unknown block type: table

Пример формулы: =REDUCE(5, A1:A3, 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 рублям

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

Unknown block type: table

Пример формулы: =REDUCE(0, A1:A4, LAMBDA(сумматор, цена, if(цена>=20, сумматор + цена, сумматор)))

Результат:

100 руб.


Использование именованной функции в качестве лямбда-функции

Возврат конечной цены после ее поэтапного повышения на определенный процент

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

Unknown block type: table

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

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

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

Результат:

133,4


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

Составление списка лучших сотрудников квартала с сохранением порядка строк.

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

Unknown block type: table

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

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

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

Результат:

Unknown block type: table

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

  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 Sheets function list (на английском)

 

Logo Upline Studio Creatium

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

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

Работает на Creatium