Excel и Google Workspace / Базовые формулы Excel
REDUCE в Excel: получить один результат из массива
REDUCE последовательно применяет LAMBDA к элементам массива и возвращает один финальный аккумулятор. Это удобная основа для сумм, произведений и условных счётчиков.
Формула
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.
Проверка свёртки включает ручную таблицу состояний и независимое вычисление итога другим способом. Для суммы квадратов можно отдельно возвести каждое число в квадрат и сложить результаты. Совпадение финала не освобождает от проверки начального значения и обработки ошибок источника.
Как пользоваться формулой
- Опишите, что должен хранить аккумулятор после каждой строки, и выберите соответствующее начальное значение.
- Задайте LAMBDA с двумя параметрами: первым для прежнего аккумулятора, вторым для текущего элемента массива.
- Выпишите несколько переходов вручную и проверьте, что тело возвращает новое состояние нужного типа.
- Сравните окончательный результат 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: вывести промежуточные аккумуляторы
SCAN применяет LAMBDA к элементам массива и возвращает все промежуточные аккумуляторы. Функция строит нарастающие итоги и помогает увидеть ход вычисления.
Excel и Google Workspace
Сумма диапазона в Excel и Google Таблицах
Сумма диапазона в Excel и Google Таблицах: формула =SUM(A1:A10) помогает настроить рабочую формулу в таблице и проверить ссылки после копирования. В тексте есть условия, пример, ошибки и проверка результата.
Excel и Google Workspace
Условие IF / ЕСЛИ в Excel и Google Таблицах
Условие IF / ЕСЛИ в Excel и Google Таблицах: формула =IF(A2>=70,"OK","Проверить") помогает в Excel и Google Таблицах: формула =IF(A2>=70,"OK","Проверить") помогает в Excel и Google Таблицах: формула =IF(A2>=70,"OK","Проверить") помогает условие истинно, и другое значение, если условие ложно. В тексте есть условия...