# REDUCE function in Excel

> REDUCE walks through every value in an array, passing a running result and the next value to a LAMBDA, and returns the final running result.

Source: https://spreadsheetpractice.com/functions/reduce · Updated October 28, 2026 · Formulas and results on this page were run by the Spreadsheet Practice formula engine on October 30, 2026

## Quick answer

- **What it does:** REDUCE walks through every value in an array, passing a running result and the next value to a LAMBDA, and returns the final running result.
- **Syntax:** `=REDUCE([initial_value], array, lambda)`
- **Most common use:** `=REDUCE(0,B2:B5,LAMBDA(total,v,total+v))` returns $1,585 (A plain total: 1,585)
- **Available in:** Excel 2024 and Microsoft 365
- **Category:** [Dynamic array functions](https://spreadsheetpractice.com/functions/category/dynamic-arrays)
- **Returns:** The final running result.
- **Google Sheets:** Available in Google Sheets.

## What it does

REDUCE walks through every value in an array, passing a running result and the next value to a LAMBDA, and returns the final running result. It can total with conditions, count matches or build up text. Think of it as the general form behind SUM, COUNT and MAX: anything that combines a list into one result.

## Syntax

`=REDUCE([initial_value], array, lambda)`

| Argument | Required? | What it is |
|---|---|---|
| `initial_value` | Optional | The starting value of the running result; 0 if left empty. |
| `array` | Required | The values to walk through, row by row. |
| `lambda` | Required | A LAMBDA with two inputs: the running result so far, and the next value. |

## Examples

Each result was calculated by running the formula on the sample sheet.

| Cell | Formula | Result | What it shows |
|---|---|---|---|
| C2 | `=REDUCE(0,B2:B5,LAMBDA(total,v,total+v))` | $1,585 | A plain total: 1,585 |
| C3 | `=REDUCE(0,B2:B5,LAMBDA(n,v,IF(v>100,n+1,n)))` | 3 | Orders over $100: 3 |
| C4 | `=REDUCE(0,B2:B5,LAMBDA(m,v,MAX(m,v)))` | $910 | The largest order: 910 |

### The sample sheet

Every formula above runs on this data:

|  | A | B | C |
|---|---|---|---|
| 1 | Order | Amount | Result |
| 2 | A-1 | $120 | $1,585 |
| 3 | A-2 | $480 | 3 |
| 4 | A-3 | $75 | $910 |
| 5 | A-4 | $910 |  |

## Common mistakes

| What you see | Why, and how to fix it |
|---|---|
| #VALUE! | The LAMBDA needs exactly two inputs: the running result and the current value. |
| The result starts wrong | initial_value is the starting point. To multiply, start at 1, not 0. |

## Tips

- =REDUCE(0,A2:A100,LAMBDA(n,v,n+(LEN(v)>10))) counts long entries without a helper column.

## Related functions

- [SCAN](https://spreadsheetpractice.com/functions/scan): SCAN works like REDUCE, passing a running result and each value to a LAMBDA, but it returns the running result at every step instead of just the last one.
- [LAMBDA](https://spreadsheetpractice.com/functions/lambda): LAMBDA creates your own function from a formula: name the inputs, then write the calculation, as in LAMBDA(price, rate, price*(1+rate)).
- [SUMPRODUCT](https://spreadsheetpractice.com/functions/sumproduct): SUMPRODUCT multiplies matching items in two or more ranges and adds the results.

## Questions

### What does REDUCE do in Excel?

It boils an array down to one result by applying a LAMBDA to a running result and each value in turn.

### What is the difference between REDUCE and SCAN?

REDUCE returns only the final result. SCAN returns the running result after every value.

## Practice

A graded REDUCE exercise ("Count large orders") is on [the REDUCE page](https://spreadsheetpractice.com/functions/reduce). It is checked instantly, then re-checked on changed data.

---

Spreadsheet Practice (https://spreadsheetpractice.com) teaches spreadsheet formulas by practice: every exercise is graded in a live grid and re-checked on changed data.
