Menu

Función LAMBDA en Excel: funciones propias, MAP y BYROW

=LAMBDA(price;price*1,2)(B2) define una pequeña función con una entrada, price, y la llama sobre B2. Guarda una LAMBDA en el Administrador de nombres para usarla como una función integrada, o pásala a MAP, BYROW, SCAN y REDUCE.

Todas las hojas de esta página están vivas: cambia un número o una fórmula y se recalculan.

=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).

Una función llamada sobre cada precio
C2
ABC
1ItemPriceWith VAT
2Pen2.53
3Bag120144
4Lamp3542
5Mug89.6
6Desk150180
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.En Excel en español: =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:

  1. Ve a Fórmulas > Administrador de nombres y haz clic en Nuevo (o Fórmulas > Definir nombre).
  2. En Nombre, escribe el nombre de la función, por ejemplo ADDVAT.
  3. En Hace referencia a, escribe la LAMBDA sin entradas: =LAMBDA(price;price*1,2).
  4. 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:

10% de descuento en precios de más de 100
C2
ABC
1ItemPricePrice to pay
2Pen2.52.5
3Bag120108
4Lamp3535
5Mug88
6Desk150135
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.En Excel en español: =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:

Mejor nota y media por estudiante
E2
ABCDEF
1StudentTest 1Test 2Test 3BestAverage
2Ann7285909082.3
3Ben6470587064
4Cara8892959591.7
5Dan7560818172
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.En Excel en español: =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:

Un total acumulado y un total
C2
ABCD
1ItemPriceRunning totalTotal
2Pen2.52.5315.5
3Bag120122.5
4Lamp35157.5
5Mug8165.5
6Desk150315.5
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.En Excel en español: =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:

Una LAMBDA con nombre pasada a MAP
C2
ABC
1ItemPriceSale price
2Pen2.52.25
3Bag120108
4Lamp3531.5
5Mug87.2
6Desk150135
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.En Excel en español: =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

Tu turno
E2
ABCDE
1StudentTest 1Test 2Test 3Total
2Ann728590
3Ben647058
4Cara889295
5Dan756081
Haz clic en una celda para ver su fórmula. Cambia un número o una fórmula y la hoja se recalcula.

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.

Ilustración de los lenguajes de programación de Coddy

Aprende a programar con Coddy

COMENZAR