# SCAN

array · from excel · excel: verified match · sheets: verified match

scans array with lambda keeping intermediates

## signature

```
SCAN(initial_value, array, lambda)
```

returns: `array`

## arguments

- initial_value: any: required
- array: range: required
- lambda: any: required

## examples

formula and result, asserted in the engine test suite.

| formula | result | with |
| --- | --- | --- |
| `=SCAN(0, A1:A3, LAMBDA(acc, v, acc + v))` | `10` | A1=10, A2=20, A3=30 |

## errors

error values observed from the engine: each with a call that produces it.

| error | produced by |
| --- | --- |
| `#ERROR!` | `=SCAN(A2:A3)` |

## related

- [ARRAY_CONSTRAIN](https://deepcalc.com/docs/functions/array-constrain.md): truncates a range to at most the given rows and columns
- [ARRAYFORMULA](https://deepcalc.com/docs/functions/arrayformula.md): evaluates an expression across a range (this engine already spills, so it is a pass-through for sheets compatibility)
- [ARRAYTOTEXT](https://deepcalc.com/docs/functions/arraytotext.md): converts array to text representation
- [BYCOL](https://deepcalc.com/docs/functions/bycol.md): applies lambda to each column of array
- [BYROW](https://deepcalc.com/docs/functions/byrow.md): applies lambda to each row of array
- [CHOOSECOLS](https://deepcalc.com/docs/functions/choosecols.md): returns the specified columns from an array
- [CHOOSEROWS](https://deepcalc.com/docs/functions/chooserows.md): returns the specified rows from an array
- [DROP](https://deepcalc.com/docs/functions/drop.md): removes rows or columns from the start or end of an array

## navigate

- [all array functions](https://deepcalc.com/docs/functions/array-functions.md)
- [function index](https://deepcalc.com/docs/functions.md): all 602 functions
- [error values](https://deepcalc.com/docs/errors.md) · [concepts](https://deepcalc.com/docs/concepts.md) · [limits](https://deepcalc.com/docs/limits.md)
- [everything in one file](https://deepcalc.com/llms-full.txt)

source: https://deepcalc.com/docs/functions/scan