Esta función reduce una matriz a un resultado acumulado mediante la aplicación de una función LAMBDA
a cada valor.
Ejemplo de uso
REDUCE(5; A1:A3; LAMBDA(acumulador; valor_actual; acumulador+valor_actual))
REDUCE(2; A1:A3; LAMBDA(acumulador; valor_actual; acumulador*valor_actual))
Sintaxis
REDUCE(valor_inicial; matriz_o_intervalo; LAMBDA)
valor_inicial
: el valor inicial deacumulador
.matriz_o_intervalo
: matriz o intervalo que se va a reducir.LAMBDA
: una funciónLAMBDA
que se aplica a cada valor dematriz_o_intervalo
para reducirlo.- Sintaxis:
LAMBDA(nombre1; nombre2; expresión_fórmula)
- Requisitos:
- La función
LAMBDA
debe tener exactamente dos argumentosnombre
y unaexpresión_fórmula
que use esosnombres
. Al aplicar la funciónLAMBDA
, el argumentonombre1
se resuelve en el valor actual delacumulador
y el argumentonombre2
se resuelve en elvalor_actual
de lamatriz_o_intervalo
. Elacumulador
se actualiza en cada paso al valor intermedio obtenido en el paso anterior. Ejemplo de operación de multiplicación sencilla
- La función
Notas
- La función
LAMBDA
enviada debe aceptar exactamente dos argumentosnombre
. Si no, se devuelve un error#N/A
. Estos argumentos se corresponden conacumulador
yvalor_actual
, en ese orden. Por aclarar:nombre1
: se resuelve con el valor actual delacumulador
.nombre2
: se resuelve con elvalor_actual
de la matriz de entrada.
- El
acumulador
se inicializa con elvalor_inicial
y se actualiza en cada paso al valor intermedio obtenido en el paso anterior.
- Mientras se aplique
LAMBDA
, elvalor_actual
de la matriz de entrada aparece fila por fila.
- En este caso, una
función con nombre
puede pasar por parámetroLAMBDA
y comportarse como una funciónLAMBDA
. Más información sobre las funciones con nombre- La
función con nombre
debe utilizar la sintaxisLAMBDA
deREDUCE
y tener definidos exactamente dos marcadores de posición de argumentos. - La
función con nombre
no debe ir seguida de un paréntesis.
- La
Ejemplos
Multiplicación sencilla
Devuelve el producto de todos los elementos de A1:A3 y de valor_inicial
.
Datos de ejemplo:
A |
|
---|---|
1 |
3 |
2 |
2 |
3 |
4 |
Ejemplo: =REDUCE(5; A1:A3; LAMBDA(acumulador; valor_actual; acumulador*valor_actual))
Cómo funciona:
De entrada, el acumulador
es igual a 5
1. Procesando la celda A1:
|
Después de procesar la celda A1:
|
2. Procesando la celda A2:
|
Después de procesar la celda A2:
|
3. Procesando la celda A3:
|
Después de procesar la celda A3:
|
Resultado:
120 |
Suma si el precio es superior o igual a 20 $
Añade todos los precios que sean superiores o iguales a 20 $.
Datos de ejemplo:
A |
|
---|---|
1 |
50 $ |
2 |
10 $ |
3 |
30 $ |
4 |
20 $ |
Ejemplo: =REDUCE(0; A1:A4; LAMBDA(acumulador; precio; si(precio>=20; acumulador + precio; acumulador)))
Resultado:
100 $ |
Usa una función con nombre como función LAMBDA
Devuelve el precio final después de aumentarlo en un determinado porcentaje cada periodo.
Datos de ejemplo:
A |
B |
C |
|
---|---|---|---|
1 |
2022 |
10 % |
Precio inicial: |
2 |
2023 |
5 % |
100 $ |
3 |
2024 |
5 % |
|
4 |
2025 |
10 % |
Ejemplo: =REDUCE(C2;B1:B4;PRICE_INCREASE)
Función con nombre: PRICE_INCREASE
es una función con nombre
que genera el resultado de aumentar el valor del porcentaje de la columna B.
Definición de la fórmula: =acumulador+acumulador*celda
, donde acumulador
y celda
son marcadores de posición de argumentos definidos para PRICE_INCREASE
Resultado:
133,4 |
Usa una función con nombre como función LAMBDA con un conjunto de datos bidimensional
Consulta la lista de empleados únicos del trimestre manteniendo el mismo orden por fila.
Datos de ejemplo:
A |
B |
C |
|||
---|---|---|---|---|---|
1 |
T1 |
T2 |
T3 |
T4 |
|
2 |
2020 |
Juan |
Adrián |
Estefanía |
Adrián |
3 |
2021 |
Pedro |
Mariano |
Juan |
Cecilia |
4 |
2022 |
Estefanía |
Miguel |
Pedro |
Adrián |
Función con nombre: ADD_IF_NOT_PRESENT
es una función con nombre
que añade un valor de cadena determinado a una matriz de valores.
Definición de la función: =SI(CONTAINS(valor_nuevo; valores_existentes); valores_existentes {valores_existentes; valor_nuevo})
, donde valores_existentes
y valor_nuevo
son marcadores de posición de argumentos definidos para ADD_IF_NOT_PRESENT
, en ese orden. CONTAINS
es otra función con nombre
.
Ejemplo: =REDUCE({B2}; B2:E4; ADD_IF_NOT_PRESENT)
Resultado:
Juan |
Adrián |
Estefanía |
Pedro |
Mariano |
Cecilia |
Miguel |
Errores frecuentes
La función LAMBDA enviada no tiene exactamente dos argumentos nombreSi la función LAMBDA
no tiene dos argumentos nombre
, se produce este error:
"Número incorrecto de argumentos para LAMBDA. Se esperaban tres argumentos, pero se han obtenido dos".
Ejemplo: =REDUCE(5; C1:C4; LAMBDA(valor_actual; valor_actual+1))
En este ejemplo, LAMBDA
solo tiene un argumento nombre
cuando se necesitan dos.
Si el último parámetro de la función REDUCE
no era una función LAMBDA
, se produce este error:
“El argumento debe ser una LAMBDA”.
Ejemplo: =REDUCE(5; C1:C4; 3)
En este ejemplo, la última función es 3
, no LAMBDA
.
Si uno o varios argumentos nombre
no son válidos, se produce este error:
“El argumento 1 de la función LAMBDA no es un nombre válido”.
Ejemplo: =REDUCE(5; C1:C4; LAMBDA(C1; v; C1+v))
En este ejemplo, C1
no es un nombre
válido porque entra en conflicto con un intervalo.
Funciones relacionadas
- Función LAMBDA: esta función te permite generar y devolver una función personalizada con un conjunto de
nombres
y unaexpresión_fórmula
que los utiliza. - Función MAP: esta función asigna cada valor de las matrices a un nuevo valor.
- Función BYROW: esta función agrupa una matriz por filas.
- Función BYCOL: esta función agrupa una matriz por columnas.
- Función SCAN: analiza una matriz y genera valores intermedios.
- Función MAKEARRAY: esta función crea una matriz calculada de dimensiones especificadas.
- Crear y usar funciones con nombre: esta función te permite crear y almacenar funciones personalizadas de forma similar a
LAMBDA
.