Excel и Google Workspace / Базовые формулы Excel

REDUCE в Excel: получить один результат из массива

REDUCE последовательно применяет LAMBDA к элементам массива и возвращает один финальный аккумулятор. Это удобная основа для сумм, произведений и условных счётчиков.

Опубликовано: Обновлено:

Формула

$$\texttt{=REDUCE(0,A2:A4,LAMBDA(a,v,a+v\char94 2))}$$
Схема Сумма квадратов через аккумулятор
Сумма квадратов через аккумуляторСумма квадратов через аккумуляторСтарое aЭлемент vНовое a0244313134290 → 4 → 13 → 29

REDUCE возвращает только последнее число 29.

Обозначения

$0$
начальный аккумулятор для суммы, не применяется
$A2:A4$
обрабатываемый столбец чисел, не применяется
$a$
аккумулятор до текущего шага, единица результата
$v$
текущее значение массива, единица исходных данных
$a+v^2$
правило обновления аккумулятора, единица квадрата исходных данных

Условия применения

Справка Microsoft указывает Excel для Microsoft 365 на Windows и Mac; поддержку других редакций здесь не обещаем. Пример использует английские имена и запятые. LAMBDA получает аккумулятор a и текущий элемент v; начальное значение задано явно, чтобы исключить неоднозначность старта.

Ограничения

REDUCE возвращает конечный аккумулятор, а не журнал шагов. Тип результата зависит от тела LAMBDA. Неверное число параметров вызывает ошибку, а ошибка внутри шага может перейти в итог. Функция не устанавливает сама, какой начальный элемент нейтрален для выбранной операции.

Подробное объяснение

REDUCE проходит элементы массива и на каждом шаге вызывает заданную LAMBDA. В неё поступают накопленный результат и очередное значение. Возвращённое значение становится аккумулятором следующего шага; после последнего элемента наружу выходит один конечный результат.

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

В выражении a+v^2 аккумулятор хранит сумму уже обработанных квадратов. Первый параметр не является номером строки, а второй не содержит весь диапазон сразу. Это различие помогает читать тело LAMBDA как отдельное правило перехода от старого состояния к новому.

Порядок особенно важен для некоммутативных операций, например последовательного добавления текста. В примерах этой страницы используется один столбец, поэтому ход вычисления виден сверху вниз. Если нужен каждый промежуточный результат, для такой же схемы обновления предназначена SCAN.

Проверка свёртки включает ручную таблицу состояний и независимое вычисление итога другим способом. Для суммы квадратов можно отдельно возвести каждое число в квадрат и сложить результаты. Совпадение финала не освобождает от проверки начального значения и обработки ошибок источника.

Как пользоваться формулой

  1. Опишите, что должен хранить аккумулятор после каждой строки, и выберите соответствующее начальное значение.
  2. Задайте LAMBDA с двумя параметрами: первым для прежнего аккумулятора, вторым для текущего элемента массива.
  3. Выпишите несколько переходов вручную и проверьте, что тело возвращает новое состояние нужного типа.
  4. Сравните окончательный результат REDUCE с независимым расчётом, а для просмотра шагов используйте SCAN.

Историческая справка

REDUCE появилась среди вспомогательных функций LAMBDA, о которых команда Excel сообщила в 2021 году. Идея свёртки давно используется в программировании: последовательность преобразуют в одно состояние с помощью правила обновления и начального значения. Продуктовая функция перенесла этот способ описания вычисления в язык формул листа. Это позволяет читать накопление как алгоритм, не создавая вспомогательный столбец для каждого шага. Современная справка Microsoft отдельно описывает аккумулятор, текущий элемент и тело LAMBDA. Исторический вклад здесь относится к реализации в Excel, а не к изобретению самого понятия свёртки. Поддержка функции зависит от редакции приложения; наличие обычной SUM или даже некоторых динамических массивов не доказывает наличие REDUCE.

Историческая линия формулы

REDUCE — реализация свёртки в Microsoft Excel через пользовательское правило LAMBDA. Концепция накопления относится к общей практике программирования, а конкретные аргументы, ошибки и совместимость определяются документацией Microsoft, без приписывания функции одному историческому автору.

Пример

В A2:A4 находятся числа 2,3,4. Требуется сумма квадратов, а не квадрат суммы. Записываем =REDUCE(0,A2:A4,LAMBDA(a,v,a+v^2)). Начальный аккумулятор 0. После первой строки он равен 0+2²=4, после второй 4+3²=13, после третьей 13+4²=29. Формула возвращает 29. Независимая проверка: отдельные квадраты 4,9,16 в сумме тоже дают 29. Квадрат суммы исходных чисел был бы (2+3+4)²=81 и решал бы другую задачу. При безразмерных входах итог безразмерен; если входы выражают длины, сумма квадратов имеет единицу площади. Промежуточные 4 и 13 не выводятся отдельными ячейками REDUCE.

Частая ошибка

Не принимайте аккумулятор за текущую ячейку или номер строки. Не начинайте произведение с нуля. Не заменяйте сумму квадратов квадратом суммы. Не ожидайте массив всех промежуточных значений от этой свёртки. Не скрывайте ошибки LAMBDA общей обработкой ошибок, пока не проверено число параметров и правило перехода.

Практика

Задачи с решением

Произведение

Условие. В A2:A4 числа 2,3,4. Найдите REDUCE(1,A2:A4,LAMBDA(a,v,a*v)).

Решение. Шаги: 1·2=2, 2·3=6, 6·4=24. Единица нейтральна для умножения.

Ответ. 24

Сумма кубов

Условие. В A2:A3 числа 1 и 2. Найдите REDUCE(0,A2:A3,LAMBDA(a,v,a+v^3)).

Решение. Первый шаг 0+1³=1, второй 1+2³=9. Отдельная сумма 1+8 подтверждает результат.

Ответ. 9

Дополнительные источники

  • https://support.microsoft.com/en-us/excel/functions/reduce-function
  • https://techcommunity.microsoft.com/blog/excelblog/announcing-lambda-helper-functions-lambdas-as-arguments-and-more/2576648

Связанные формулы

Excel и Google Workspace

SCAN в Excel: вывести промежуточные аккумуляторы

$\texttt{=SCAN(0,A2:A4,LAMBDA(a,v,a+v))}$

SCAN применяет LAMBDA к элементам массива и возвращает все промежуточные аккумуляторы. Функция строит нарастающие итоги и помогает увидеть ход вычисления.

Excel и Google Workspace

Сумма диапазона в Excel и Google Таблицах

$=SUM(A1:A10)$

Сумма диапазона в Excel и Google Таблицах: формула =SUM(A1:A10) помогает настроить рабочую формулу в таблице и проверить ссылки после копирования. В тексте есть условия, пример, ошибки и проверка результата.

Excel и Google Workspace

Условие IF / ЕСЛИ в Excel и Google Таблицах

$=IF(A2>=70,"OK","Проверить")$

Условие IF / ЕСЛИ в Excel и Google Таблицах: формула =IF(A2>=70,"OK","Проверить") помогает в Excel и Google Таблицах: формула =IF(A2>=70,"OK","Проверить") помогает в Excel и Google Таблицах: формула =IF(A2>=70,"OK","Проверить") помогает условие истинно, и другое значение, если условие ложно. В тексте есть условия...