La función ESCANEAR en Excel procesa una matriz de datos, elemento por elemento, aplicando una función LAMBDA personalizada en cada paso. A diferencia de otras funciones similares como REDUCIR, que solo devuelve el resultado final, ESCANEAR devuelve una matriz con todos los resultados intermedios de la acumulación, lo que la hace ideal para calcular totales acumulados, productos corrientes o cualquier cálculo secuencial.
En esencia, recorre una matriz, mantiene un valor acumulado y devuelve el estado de ese acumulador en cada paso del proceso.
Sintaxis
=ESCANEAR([valor_inicial], matriz, lambda(acumulador, valor))
La función ESCANEAR tiene los siguientes argumentos:
- [valor_inicial]: Define el valor inicial para el acumulador. Si se omite, el acumulador comienza con el primer elemento de la matriz y la iteración empieza en el segundo elemento. Opcional.
- matriz: La matriz de valores que se va a procesar o «escanear». Obligatorio.
- lambda: Una función LAMBDA que se aplica en cada iteración. Esta LAMBDA debe tener dos parámetros:
- acumulador: El valor que se va acumulando en cada paso. En la primera iteración, es igual al valor_inicial.
- valor: El elemento actual de la matriz que se está procesando.
Obligatorio.
Ejemplos
Ejemplo 1: Total acumulado (o suma corriente)
Este es el uso más común. Se pretende calcular la suma acumulada de una lista de valores. La función devolverá una matriz con el total hasta ese punto en cada fila.
| A | |
|---|---|
| 1 | 10 |
| 2 | 25 |
| 3 | 15 |
| 4 | 30 |
=ESCANEAR(0, A1:A4, LAMBDA(acumulador, valor, acumulador + valor))
Resultado:
La fórmula, introducida en una celda, desbordará y mostrará los siguientes resultados en las celdas adyacentes hacia abajo:
- 10 (0 + 10)
- 35 (10 + 25)
- 50 (35 + 15)
- 80 (50 + 30)
Ejemplo 2: Concatenación de texto acumulada
Se puede usar ESCANEAR para construir una cadena de texto de forma progresiva, añadiendo el siguiente elemento en cada paso.
| B | |
|---|---|
| 1 | Manzanas |
| 2 | Peras |
| 3 | Naranjas |
=ESCANEAR("", B1:B3, LAMBDA(a, v, SI(a="", v, a & ", " & v)))
Resultado:
- «Manzanas»
- «Manzanas, Peras»
- «Manzanas, Peras, Naranjas»
Nota: Se usa una función SI para evitar que se añada una coma al principio del texto.
Ejemplo 3: Total acumulado condicional
Este ejemplo muestra cómo se puede crear un total acumulado que solo sume los valores que cumplen una determinada condición (en este caso, ser mayores que 50).
| C | |
|---|---|
| 1 | 100 |
| 2 | 25 |
| 3 | 75 |
| 4 | 40 |
| 5 | 60 |
=ESCANEAR(0, C1:C5, LAMBDA(a, v, a + SI(v>50, v, 0)))
Resultado:
- 100 (100 > 50, se suma)
- 100 (25 no es > 50, el acumulado no cambia)
- 175 (75 > 50, se suma al acumulado)
- 175 (40 no es > 50, el acumulado no cambia)
- 235 (60 > 50, se suma al acumulado)
Observaciones
ESCANEAR es una función de matriz dinámica. Esto significa que si el resultado es una matriz de valores, «se desbordará» automáticamente a las celdas adyacentes. Asegúrate de que haya suficientes celdas vacías debajo de la celda de la fórmula para evitar errores #¡DESBORDAMIENTO!.
Errores comunes
- #¡VALOR!: Ocurre si la función LAMBDA no devuelve un único valor o si sus parámetros no son válidos.
- #CALC!: Generalmente indica que la matriz proporcionada a la función está vacía.
- #NOMBRE?: Este error puede aparecer si el nombre de la función LAMBDA está mal escrito o si tu versión de Excel no es compatible con esta función.
Disponibilidad por versión de Excel
La función ESCANEAR está disponible únicamente para suscriptores de Microsoft 365.
Compatibilidad
| Software | Compatibilidad | Notas |
|---|---|---|
| Microsoft Excel | ✔️ | Disponible solo en Microsoft 365. |
| Google Sheets | ✔️ | La función SCAN existe y tiene una sintaxis idéntica. |
| LibreOffice Calc | ❌ | No disponible. |
| OpenOffice Calc | ❌ | No disponible. |
| WPS Office Spreadsheets | ❌ | No disponible. |
| Apple Numbers | ❌ | No disponible. |
Funciones Relacionadas
- LAMBDA: Permite crear funciones personalizadas y reutilizables. Es un componente esencial de ESCANEAR.
- REDUCIR: Similar a ESCANEAR, pero solo devuelve el valor final acumulado, no los pasos intermedios.
- MAP: Aplica una función LAMBDA a cada elemento de una matriz y devuelve una nueva matriz con los resultados.
