REDUCE
Boil a whole array down to a single result by running a LAMBDA across every value and carrying a running total forward with REDUCE.
Spreadsheet editor
Spreadsheet editor
Syntax
=REDUCE([initial_value], array, lambda)
Returns: Varies Arguments
| Argument | Required | Description |
|---|---|---|
| initial_value | No | The starting value for the accumulator. Pick a value that matches your step: 0 for adding, 1 for multiplying, or an empty string "" for building text. |
| array | Yes | The array or range whose values you want to fold into one result. |
| lambda | Yes | A LAMBDA that combines each value with the running result. It takes two parameters, the accumulator first and the current value second, and must be the last argument. |
About
Use REDUCE when a plain function like SUM or SUMPRODUCT cannot express the logic you need. It is perfect for custom running calculations: compounding a list of growth rates, adding up only the values that pass a test, or stitching text together into one string. Because you write the step yourself inside the LAMBDA, you control exactly what happens at each value.
REDUCE pairs well with LET when your step needs a few named pieces, and with SEQUENCE when you want to generate the numbers to fold over. Unlike functions that spill one result per row, REDUCE returns just the final accumulated value, which makes it a clean way to turn a column into a single summary number, label, or sentence.
Examples
Build a guest list in one cell
Spreadsheet editor
Add up only the large orders
Spreadsheet editor
Compound a list of growth rates
Spreadsheet editor
Watch out for
Accumulator and value are in the wrong order
The LAMBDA lists the current value before the accumulator, so REDUCE feeds them in backwards and your math comes out wrong.
→ Keep the order fixed: the accumulator is always the first parameter and the current value is the second, like LAMBDA(acc, val, ...).
Starting value does not fit the step
You start a multiplication at 0, so every result is 0, or you start text at 0 and get a stray number in front of your string.
→ Match the starting value to the job. Some common ones: use 0 for adding, 1 for multiplying, and "" (an empty string) for building text.
Expecting one result per row
You assume REDUCE spills a value next to each input, but it only returns the single final accumulated value.
→ Use REDUCE when you want one summary answer. If you need a result for every value, build that logic with LAMBDA in a function that spills per row instead.
Function not available
REDUCE returns a #NAME? error in older Excel versions that do not include it.
→ REDUCE needs Microsoft 365 or Excel for the web. On older versions, use SUMPRODUCT or a helper column to get a similar result.