=LAMBDA(price,price*1.2)(B2) define una pequeña función con una entrada, price, y la llama en el acto sobre B2: el 2.5 del bolígrafo pasa a 3. Por sí sola es solo un =B2*1,2 más largo. La gracia de LAMBDA es darle a la función un nombre en el Administrador de nombres, para que una fórmula larga pase a ser =ADDVAT(B2), y pasársela a MAP, BYROW y las demás funciones de abajo. LAMBDA y estas funciones se llaman igual en Excel en español, y la tabla también acepta las fórmulas escritas con punto y coma (o con comas, como en México): =LAMBDA(price;price*1,2)(B2).
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | With VAT |
| 2 | Pen | 2.5 | 3 |
| 3 | Bag | 120 | 144 |
| 4 | Lamp | 35 | 42 |
| 5 | Mug | 8 | 9.6 |
| 6 | Desk | 150 | 180 |
=LAMBDA(price;price*1,2)(B2)Sintaxis de LAMBDA
=LAMBDA([parameter1, parameter2, ...], calculation)
- Cada
parameter(parámetro) es un nombre para una entrada, como los nombres de LET. Se admiten hasta 253. - El último argumento es el
calculation(cálculo), que usa los parámetros. - Los valores de los parámetros van entre paréntesis justo después del paréntesis de cierre:
=LAMBDA(x;y;x*y)(3;4)devuelve 12.
LAMBDA, MAP, BYROW, BYCOL, SCAN, REDUCE y MAKEARRAY necesitan Microsoft 365, Excel 2024 o Excel para la web. Excel 2021 tiene LET pero no estas. Google Sheets también tiene LAMBDA, y guarda una con un nombre en Datos > Funciones con nombre.
Guardar una LAMBDA como función personalizada
Una LAMBDA se vuelve reutilizable cuando le das un nombre. Excel no necesita VBA ni complementos para esto:
- Ve a Fórmulas > Administrador de nombres y haz clic en Nuevo (o Fórmulas > Definir nombre).
- En Nombre, escribe el nombre de la función, por ejemplo
ADDVAT. - En Hace referencia a, escribe la LAMBDA sin entradas:
=LAMBDA(price;price*1,2). - Haz clic en Aceptar. Ahora escribe
=ADDVAT(B2)en cualquier celda del libro.
Name: ADDVAT
Refers to: =LAMBDA(price,price*1.2)
In a cell: =ADDVAT(B2) returns 3 when B2 is 2.5
La función vive solo en ese libro. Copia a otro libro una hoja que la use y el nombre viaja con ella. Cambia la LAMBDA una vez en el Administrador de nombres y se actualizan todas las celdas que la llaman. Prueba una LAMBDA en una celda con las entradas entre paréntesis antes de guardarla; un error se ve mejor ahí.
MAP: aplicar una LAMBDA a cada celda
MAP llama a la LAMBDA una vez por cada celda de un rango y devuelve un rango de la misma forma. Aquí cada precio de más de 100 tiene un 10% de descuento:
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | Price to pay |
| 2 | Pen | 2.5 | 2.5 |
| 3 | Bag | 120 | 108 |
| 4 | Lamp | 35 | 35 |
| 5 | Mug | 8 | 8 |
| 6 | Desk | 150 | 135 |
=MAP(B2:B6;LAMBDA(p;SI(p>100;p*0,9;p)))La bolsa (120) pasa a 108 y el escritorio (150) a 135; los demás precios pasan sin cambios. Una sola fórmula en C2 cubre toda la columna. MAP también puede recorrer en paralelo dos rangos del mismo tamaño: con cantidades en D2:D6, =MAP(B2:B6;D2:D6;LAMBDA(p;q;p*q)) multiplica cada precio por su cantidad.
BYROW: un resultado por fila
BYROW le pasa a la LAMBDA una fila entera cada vez, así que la LAMBDA puede aplicarle MAX, SUMA o PROMEDIO. La mejor nota y la media de cada estudiante:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Student | Test 1 | Test 2 | Test 3 | Best | Average |
| 2 | Ann | 72 | 85 | 90 | 90 | 82.3 |
| 3 | Ben | 64 | 70 | 58 | 70 | 64 |
| 4 | Cara | 88 | 92 | 95 | 95 | 91.7 |
| 5 | Dan | 75 | 60 | 81 | 81 | 72 |
=BYROW(B2:D5;LAMBDA(r;MAX(r)))E2 devuelve 90, 70, 95 y 81; F2 devuelve 82.3, 64, 91.7 y 72. Un simple =MAX(B2:D5) daría un único número para toda la tabla; BYROW es lo que mantiene separadas las filas en una sola fórmula. BYCOL hace lo mismo por columna: =BYCOL(B2:D5;LAMBDA(c;PROMEDIO(c))) devuelve la media de cada examen.
SCAN y REDUCE: totales acumulados
REDUCE recorre un rango llevando un valor consigo y devuelve solo el resultado final. SCAN hace lo mismo pero devuelve cada paso, lo que lo convierte en un total acumulado de una sola fórmula:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Item | Price | Running total | Total |
| 2 | Pen | 2.5 | 2.5 | 315.5 |
| 3 | Bag | 120 | 122.5 | |
| 4 | Lamp | 35 | 157.5 | |
| 5 | Mug | 8 | 165.5 | |
| 6 | Desk | 150 | 315.5 |
=SCAN(0;B2:B6;LAMBDA(total;x;total+x))El primer argumento, 0, es el valor inicial. Para cada precio, la LAMBDA recibe el total hasta ese momento y el precio, y devuelve el nuevo total. C2 recorre 2.5, 122.5, 157.5, 165.5, 315.5, y D2 muestra solo el 315.5 final. Para un total simple SUMA es más sencilla, pero REDUCE puede llevar cualquier cosa, como un texto que crece o un conteo que solo sube en algunas filas.
Poner nombre a una LAMBDA dentro de una fórmula con LET
Una LAMBDA no necesita el Administrador de nombres si solo la usa una fórmula. Ponle nombre con LET y pasa el nombre a MAP o BYROW:
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | Sale price |
| 2 | Pen | 2.5 | 2.25 |
| 3 | Bag | 120 | 108 |
| 4 | Lamp | 35 | 31.5 |
| 5 | Mug | 8 | 7.2 |
| 6 | Desk | 150 | 135 |
=LET(discount;LAMBDA(p;p*0,9);MAP(B2:B6;discount))Cada precio tiene un 10% de descuento: 2.25, 108, 31.5, 7.2 y 135. En Excel también puedes llamar a la LAMBDA con nombre directamente dentro de LET, =LET(f;LAMBDA(x;x*2);f(5)), que devuelve 10.
Práctica: un total por fila con BYROW
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Student | Test 1 | Test 2 | Test 3 | Total |
| 2 | Ann | 72 | 85 | 90 | |
| 3 | Ben | 64 | 70 | 58 | |
| 4 | Cara | 88 | 92 | 95 | |
| 5 | Dan | 75 | 60 | 81 |
Tu turno: En E2, devuelve el total de los tres exámenes de cada estudiante, un número por fila, con una sola fórmula.
Errores frecuentes con LAMBDA
=LAMBDA(x,x*2) #CALC! defined but never called
=LAMBDA(x,x*2)(5) 10
=LAMBDA(x,y,x*y)(3) #VALUE! two parameters, one value
=LAMBDA(x,x*2)(3,4) #VALUE! one parameter, two values
- #CALC! significa que una LAMBDA está en una celda sin que nadie la llame. Añade las entradas entre paréntesis, o guárdala en el Administrador de nombres y llámala por su nombre.
- #¡VALOR! (#VALUE! en inglés, el nombre que muestran la tabla y los ejemplos de arriba) significa que el número de valores no coincide con el número de parámetros. Cuéntalos a los dos lados.
- #¿NOMBRE? (#NAME? en inglés) significa que esa versión de Excel no tiene LAMBDA, o que un nombre guardado está mal escrito. Un nombre de parámetro sigue las reglas de LET: sin espacios y sin nombres que parezcan una dirección de celda.
- Una LAMBDA de BYROW que devuelve varios valores por fila da #CALC!. Cada fila debe producir un valor; para devolver una fila de resultados, usa MAKEARRAY o una fórmula matricial normal.
Preguntas frecuentes
¿Qué es la función LAMBDA en Excel?
Convierte una fórmula en una función con entradas con nombre. =LAMBDA(price;price*1,2) recibe una entrada llamada price y devuelve price por 1,2. Llámala añadiendo la entrada entre paréntesis, =LAMBDA(price;price*1,2)(B2), o guárdala con un nombre en el Administrador de nombres.
¿Cómo creo una función personalizada en Excel sin VBA?
Abre Fórmulas > Administrador de nombres > Nuevo, escribe un nombre como ADDVAT y en Hace referencia a escribe =LAMBDA(price;price*1,2). Haz clic en Aceptar, y =ADDVAT(B2) funciona en cualquier celda de ese libro.
¿Por qué mi LAMBDA devuelve #CALC!?
Una LAMBDA escrita en una celda sin entradas, como =LAMBDA(x;x*2), es una función que nunca se llamó, así que Excel muestra #CALC!. Añade la entrada entre paréntesis después, =LAMBDA(x;x*2)(5), o guárdala en el Administrador de nombres.
¿Qué versiones de Excel tienen LAMBDA?
Microsoft 365, Excel 2024 y Excel para la web, junto con MAP, BYROW, BYCOL, SCAN, REDUCE y MAKEARRAY. Excel 2021 tiene LET pero no LAMBDA.
¿Qué hace BYROW en Excel?
Ejecuta una LAMBDA una vez por cada fila de un rango y devuelve un resultado por fila: =BYROW(B2:D5;LAMBDA(r;MAX(r))) devuelve el valor más alto de cada fila, derramado hacia abajo.