What is REDUCE in Google Sheets?

REDUCE walks an array left to right, carrying an accumulator value updated by a LAMBDA on each step. It can implement custom aggregates, text joins with rules, or conditional running logic that SUM alone cannot express.

When to use it

Use REDUCE when you need a single summary from a list with custom combination rules, not a spilled running column.

When to skip it

Skip REDUCE for simple totals. SUM, PRODUCT, or TEXTJOIN are faster to read. Use SCAN when you need every intermediate step visible.

How it works

  1. 1

    Set initial accumulator value, such as 0 or empty string.

  2. 2

    Pass the array to fold over.

  3. 3

    Write LAMBDA(acc, value, new_acc) returning the updated accumulator.

  4. 4

    REDUCE returns only the final accumulator after the last element.

  5. 5

    Test on a short list in a scratch cell to verify order of operations.

  6. 6

    Document whether your LAMBDA treats blanks as zero or skips them.

Examples in Google Sheets

Custom weighted sum

=REDUCE(0, A2:A, LAMBDA(acc, v, acc + v * 2)) doubles each value while summing.

Concat with separator

=REDUCE("", A2:A, LAMBDA(acc, v, IF(acc="", v, acc & ", " & v))) joins with commas.

Max ignoring blanks

=REDUCE(0, B2:B, LAMBDA(acc, v, IF(v>acc, v, acc))) finds max when IFERROR guards exist.

Build this without starting from a blank cell

Use a Better Sheets tool for REDUCE, then watch a walkthrough when you want the full pattern.

Better Sheets resources

Common mistakes

  • Using REDUCE when SCAN was needed to show each running step.
  • Wrong initial accumulator type, such as string start for numeric fold.
  • Assuming REDUCE runs in parallel; order matters for non-commutative ops.
  • Folding huge columns with heavy REGEX inside LAMBDA.
  • Duplicating SUM logic in REDUCE without reason.

Frequently asked questions

REDUCE vs SCAN?
REDUCE returns one final value. SCAN returns every intermediate accumulator.
REDUCE vs SUM?
SUM is built-in and faster to read. REDUCE allows custom logic per element.
Can REDUCE work on text?
Yes with string accumulators and concatenation rules.
Initial value required?
Yes. It is the starting accumulator before the first array element.
REDUCE order?
Processes array in natural order. Order matters for division or string builds.
REDUCE with FILTER?
FILTER the array first, then REDUCE the result.
Why slow recalc?
Complex LAMBDA per element on long arrays is expensive.

Related blog posts

Guides that explain REDUCE in more depth.

Browse the blog

Related glossary terms

Done reading about REDUCE?

Membership unlocks 636+ tutorials, unlimited generators, and every template. Practical lessons. Zero fluff.

Need this once

Jump to a free tool or a single tutorial for this topic.

Learning Sheets for real

Unlock the full library, generators, and templates with membership.