- La función LAMBDA permite crear funciones personalizadas en Excel usando solo fórmulas, sin programación ni VBA.
- Funciones asociadas como BYROW, BYCOL, MAP, SCAN, REDUCE y MAKEARRAY aplican LAMBDA para recorrer y transformar matrices.
- Probar LAMBDA primero en una celda y luego guardarla en el Administrador de nombres facilita la depuración y reutilización.
- LAMBDA y las nuevas funciones de matrices dinámicas simplifican cálculos avanzados y sustituyen muchos procesos antes resueltos con macros.
Функція LAMBDA en Excel ha supuesto un cambio radical en la forma de trabajar con fórmulas dentro de las hojas de cálculo de Microsoft. Gracias a ella, puedes crear tus propias funciones personalizadas utilizando únicamente el lenguaje de fórmulas de Excel, sin tocar ni una línea de VBA ni programación clásica. Es como si tuvieras la capacidad de añadir nuevas funciones nativas al programa, diseñadas a tu medida.
Además, alrededor de LAMBDA han aparecido una serie de funciones asociadas como BYROW, BYCOL, MAP, SCAN, REDUCE o MAKEARRAY, pensadas para trabajar con rangos y matrices de una forma mucho más flexible y potente. Estas funciones se comportan, salvando las distancias, como pequeños bucles que recorren los datos y aplican una transformación definida mediante LAMBDA, lo que abre un abanico de posibilidades brutal para el análisis avanzado directamente en la hoja.
Qué es la función LAMBDA en Excel y para qué sirve
Функція LAMBDA es una herramienta que permite definir funciones personalizadas utilizando exclusivamente fórmulas de Excel. En lugar de programar en VBA o depender de macros, puedes encapsular cualquier cálculo complejo en una única función reutilizable, con sus propios parámetros y un resultado final claro y limpio.
На практиці, LAMBDA convierte cualquier fórmula en una función que puedes volver a usar todas las veces que quieras. Su gran ventaja es que se integra a la perfección con el resto del motor de cálculo de Excel y se puede combinar con funciones estándar, referencias, nombres definidos y matrices dinámicas.
La sintaxis básica cuando se usa directamente en una celda es:
=LAMBDA(parámetro1; parámetro2; …; parámetroN; cálculo)(valor1; valor2; …; valorN)
У цій структурі parámetro1, parámetro2, …, parámetroN son los nombres que das a las variables dentro de la función, mientras que розрахунок es la fórmula que utiliza esos parámetros para generar un resultado. Al final, entre el segundo paréntesis, se pasan los справжні цінності que tomarán esos parámetros al ejecutar la función.
Si aprovechas el іменний менеджер de Excel para crear una función LAMBDA permanente, la sintaxis cambia ligeramente, porque allí defines la función, pero no la llamas todavía. En ese caso la forma sería:
=LAMBDA(var1; var2; …; varN; cálculo)
Más adelante llamarías a esa función usando el nombre que le hayas dado en el Administrador de nombres, escribiendo simplemente el nombre y los argumentos igual que harías con SUMA, PROMEDIO o cualquier otra función estándar.
Buenas prácticas al crear y probar funciones LAMBDA
Cuando empiezas a trabajar con LAMBDA, es importante seguir una serie de recomendaciones para que las funciones se comporten como esperas y no pierdas tiempo depurando errores complicados. Una de las formas más prácticas de empezar es crear y probar la LAMBDA directamente en una celda.
El procedimiento habitual consiste en escribir primero la fórmula completa con la definición de LAMBDA y la llamada en la misma expresión, de manera que veas al momento si el resultado es el esperado. De esta forma, puedes detectar errores de sintaxis o de lógica antes de guardarla como función con nombre.
Por ejemplo, una estructura de prueba muy típica sería:
=LAMBDA(; cálculo)(valores_de_prueba)
Para comprobar algo muy sencillo como sumar 1 a un número, podrías usar:
=LAMBDA(número; número + 1)(1)
En este caso, la función devolvería el valor 2. Es un ejemplo muy simple, pero sirve para ver la mecánica: primero defines los parámetros y el cálculo, y justo después llamas a esa función pasando el argumento correspondiente.
Una recomendación clave para evitar el error #CALC! es asegurarte de que tu LAMBDA siempre devuelve un resultado. Esto se consigue incluyendo de forma clara una expresión al final que produzca un valor único o una matriz, según lo que busques. Si durante las pruebas ves el error #CALC!, revisa que la fórmula realmente esté generando algo que Excel pueda mostrar como resultado.
Cuando ya tengas la LAMBDA probada en una celda y veas que funciona correctamente, es buen momento para mover esa lógica al Administrador de nombres y convertirla en una función personalizada reutilizable en toda la hoja o en todo el libro.
Relación de LAMBDA con las nuevas funciones de matrices
Alrededor de LAMBDA han surgido una serie de funciones avanzadas como BYROW, BYCOL, MAP, SCAN, REDUCE та MAKEARRAY (esta última traducida en algunas versiones como ARCHIVOMAKEARRAY), que se apoyan en LAMBDA para aplicar transformaciones sobre rangos y matrices completas.
La idea general es que estas funciones recorren rangos de datos (por filas, por columnas o elemento a elemento) y, para cada elemento o grupo de elementos, ejecutan una LAMBDA que tú mismo defines. Es decir, funcionan como si fuesen bucles, pero integrados en el lenguaje de fórmulas de Excel.
Con ello, puedes realizar operaciones que antes requerían columnas auxiliares, tablas intermedias o incluso macros, directamente con una única fórmula matricial que se expande y devuelve resultados para todo el rango de una tacada.
En el paquete de funciones relacionadas con LAMBDA destacan, especialmente, REDUCE, MAP, SCAN, BYCOL, BYROW y MAKEARRAY, cada una con un objetivo concreto: recorrer filas, aplicar transformaciones por columnas, acumular resultados, crear matrices calculadas desde cero, etc. Todas ellas tienen en común que utilizan LAMBDA como «motor» interno, al que van pasando valores y acumuladores a medida que avanzan por la matriz.
Función BYROW: recorrer por filas y devolver resultados fila a fila
Функція BYROW se emplea para aplicar una LAMBDA a cada fila de un rango y devolver, como resultado, una matriz con un valor por cada fila procesada. Es una forma muy eficiente de calcular subtotales o estadísticas fila por fila sin tener que copiar fórmulas en vertical.
Su sintaxis general es:
=BYROW(matriz; LAMBDA(fila; expresión))
El primer argumento es la matriz o rango que quieres recorrer (por ejemplo, B2:D7), y el segundo es una LAMBDA que recibe como parámetro cada fila de ese rango, una a una. La LAMBDA devuelve el valor que quieres asociar a esa fila (posiblemente una suma, un promedio, una comprobación lógica, etc.).
Imagina que tienes una tabla de datos en el rango B2: D7 y quieres obtener un subtotal por cada fila. Podrías escribir en la celda E2 algo como:
=BYROW(B2:D7; LAMBDA(fila; SUMA(fila)))
El resultado sería un vector de salida con un valor por cada fila de la matriz B2:D7, donde cada valor representa la suma de los elementos de esa fila. De esta forma, no necesitas escribir SUMA fila por fila: BYROW lo hace por ti y derrama el resultado hacia abajo.
Función BYCOL: aplicar LAMBDA por columnas
Muy similar a BYROW, la función BYCOL está pensada para recorrer una matriz por columnas en lugar de por filas. Aplica una LAMBDA a cada columna del rango y devuelve una matriz de resultados en la que cada elemento corresponde a una columna.
Su sintaxis típica es:
=BYCOL(matriz; LAMBDA(columna; expresión))
En este caso, el parámetro que recibe la LAMBDA es la columna completa de la matriz que se está procesando en cada paso. De igual modo que BYROW, la función devuelve un vector, pero ahora pensado para trabajar con los totales o indicadores por columna.
Siguiendo con el ejemplo de antes, si quieres calcular el promedio de cada columna del rango B2: D7, podrías colocar en la celda B8 una fórmula de este estilo:
=BYCOL(B2:D7; LAMBDA(columna; PROMEDIO(columna)))
El resultado será una matriz con el mismo número de columnas que B2:D7, en la que cada posición contiene el promedio de esa columna. Así consigues, de un plumazo, todos los promedios sin tener que arrastrar fórmulas ni preocuparte por referencias relativas.
Función MAKEARRAY (ARCHIVOMAKEARRAY): crear matrices calculadas
Функція MAKEARRAY (en algunas traducciones mostrada como ARCHIVOMAKEARRAY) permite generar una matriz completamente nueva especificando el número de filas y columnas, y calculando cada elemento mediante una LAMBDA. No parte de un rango existente, sino que construye la matriz desde cero.
Su sintaxis general es:
=MAKEARRAY(filas; columnas; LAMBDA(fila; columna; expresión))
Аргумент ряди indica cuántas filas tendrá la matriz de salida, стовпчики define el número de columnas, y la LAMBDA recibe como parámetros los índices de fila y columna que se están calculando en cada iteración. Con esa información puedes construir prácticamente cualquier patrón numérico o de texto.
Un ejemplo muy ilustrativo es crear una matriz en la que cada elemento indique su propia posición. En una celda cualquiera podrías escribir algo similar a:
=ARCHIVOMAKEARRAY(3; 2; LAMBDA(fila; col; -(fila & col)))
El resultado sería una matriz de 3 рядки по 2 стовпці, donde cada valor representa una combinación de fila y columna (por ejemplo, 11, 12, 21, 22, 31, 32), transformada según el cálculo que introduzcas (en este caso, el signo negativo aplicado a la concatenación fila&col).
Otro uso interesante de MAKEARRAY es convertir un vector en una matriz controlando cuántos elementos tomas. Supón que quieres formar una matriz con los 6 primeros valores de un rango vertical. Podrías crear primero una matriz de posiciones con ARCHIVOMAKEARRAY, obtener los k menores valores de posición y, finalmente, usar INDICE para recuperar los elementos reales del rango original.
Un ejemplo de fórmula, combinando varias funciones, podría tener esta estructura:
=LET(arrPos; ARCHIVOMAKEARRAY(3; 2; LAMBDA(fila; col; -(fila & col))); arrPosF; COINCIDIR(arrPos; K.ESIMO.MENOR(arrPos; SECUENCIA(6))); INDICE(G8:G13; arrPosF))
Aquí se utiliza LET para definir nombres intermedios (arrPos, arrPosF), se construye una matriz de posiciones con ARCHIVOMAKEARRAY (3×2), se seleccionan las 6 menores posiciones con K.ESIMO.MENOR y SECUENCIA, y finalmente se emplea INDICE para devolver los valores correspondientes del rango G8:G13. Es un ejemplo potente de cómo combinar LAMBDA y funciones de matrices dinámicas para realizar transformaciones complejas sin macros.
Función MAP: transformación elemento a elemento
Функція MAP sirve para recorrer una o varias matrices al mismo tiempo y devolver una nueva matriz en la que cada elemento de salida se calcula aplicando una LAMBDA al elemento (o elementos) correspondiente de entrada. Es equivalente a un «map» clásico en programación funcional.
Основний синтаксис:
=MAP(matriz1; LAMBDA_o_más_matrices)
En su versión más simple, toma una única matriz y una LAMBDA que recibe cada valor de esa matriz. Esta LAMBDA transforma el valor y devuelve la versión nueva que formará parte de la matriz de salida, manteniendo las однакові розміри que la matriz original.
Por ejemplo, si quieres recorrer un rango vertical A21:A26 y dejar el número original en caso de ser par o un guion en caso de ser impar, podrías utilizar algo como:
=MAP($A$21:$A$26; LAMBDA(param1; SI(ES.PAR(param1); param1; «-«)))
En este caso, MAP analiza cada elemento de A21:A26. La LAMBDA comprueba con ES.PAR si el número es par. Si lo es, devuelve el propio número; si no, devuelve un guion. El resultado es una matriz de igual tamaño que el rango original, pero con la transformación aplicada a cada elemento.
Este enfoque es muy útil cuando quieres aplicar una lógica condicional, una conversión de texto, una normalización de valores o cualquier otra operación sencilla, evitando columnas auxiliares y fórmulas repetitivas.
Función SCAN: acumulados y resultados intermedios
Функція SCAN se emplea para examinar una matriz aplicando una LAMBDA a cada valor y generando una matriz de salida donde se muestran todos los valores intermedios del proceso de acumulación. Se parece mucho a REDUCE, pero en lugar de devolver solo el resultado final, conserva cada paso.
Su sintaxis general es:
=SCAN(; matriz; LAMBDA(acumulador; valor))
El primer argumento, opcional, es el початкове значення del acumulador (por ejemplo, 0 si vas a sumar). El segundo argumento es la matriz o rango que quieres recorrer. Finalmente, la LAMBDA recibe dos parámetros: el acumulador (resultado parcial hasta ese momento) y el valor actual de la matriz que estás procesando.
En cada paso, SCAN evalúa la LAMBDA, actualiza el acumulador y genera un nuevo elemento de la matriz de salida con el valor resultante. De esta forma, obtienes una secuencia de acumulados o transformaciones progresivas.
Un ejemplo típico es el cálculo de un acumulado creciente (running total) sobre un conjunto de valores y, a partir de ahí, obtener también la frecuencia acumulada relativa. Imagina que tienes datos en A31:A36 y quieres el acumulado absoluto:
=SCAN(0; A31:A36; LAMBDA(acum; param1; acum + param1))
Esta fórmula recorre A31:A36 sumando cada valor al acumulado anterior. El resultado es una matriz con el mismo número de elementos que el rango original, pero cada posición muestra el total acumulado hasta ese punto.
A partir de ese acumulado, es sencillo construir la frecuencia acumulada porcentual dividiendo cada acumulado entre el total global. Podrías, por ejemplo, definir primero el total con SUMA y luego aplicar SCAN de nuevo:
=LET(total; SUMA(A31:A36); SCAN(0; A31:A36; LAMBDA(acum; param1; (acum + param1)))/total)
En este caso, LET asigna a загальний la suma de todo el rango A31:A36. Después SCAN genera la secuencia de acumulados y, al dividirla entre total, obtienes para cada paso la frecuencia acumulada relativa, todo en una única fórmula matricial.
Función REDUCE: reducción a un solo valor acumulado
Функція ЗНИЖЕННЯ también recorre una matriz aplicando una LAMBDA a cada elemento, pero a diferencia de SCAN, aquí solo te interesa obtener кінцевий результат del proceso de acumulación. Es decir, realiza el mismo tipo de recorrido que SCAN, pero únicamente devuelve el último valor del acumulador.
Його синтаксис:
=REDUCE(; matriz; LAMBDA(acumulador; valor))
Ig igual que en SCAN, el початкове_значення establece el punto de partida del acumulador, la матриця es el rango a procesar y la LAMBDA tiene como parámetros el acumulador actual y el valor que se está leyendo en ese momento.
Un uso muy típico es calcular una suma corrida o una operación acumulativa en la que solo te interesa el último resultado. Por ejemplo, para sumar A1:A6 usando REDUCE podrías escribir:
=REDUCE(0; A1:A6; LAMBDA(acum; param1; acum + param1))
Aquí, REDUCE va recorriendo A1:A6 y en cada paso actualiza acum sumando el valor de la celda actual (param1). Al finalizar, devuelve un único valor: la suma total. Es conceptualmente similar a usar SUMA, pero con REDUCE puedes definir cualquier lógica de acumulación más compleja, no solo sumas.
La potencia de REDUCE radica en que te permite trabajar con el resultado previo en cada paso y seguir aplicando operaciones hasta completar el recorrido. De esta forma, puedes implementar cálculos personalizados sofisticados que tradicionalmente se resolvían con bucles en macros.
Creación de funciones personalizadas con LAMBDA y el Administrador de nombres
Uno de los puntos más potentes de LAMBDA es la posibilidad de convertir cualquier fórmula en una función de usuario usando el Administrador de nombres de Excel. Esto permite que tu función tenga un nombre propio y se pueda utilizar como cualquier otra función nativa del programa.
El flujo de trabajo habitual suele ser este: primero, probar la LAMBDA en una celda, incluyendo tanto la definición como la llamada con argumentos de ejemplo. Una vez que verificas que funciona correctamente y devuelve el resultado esperado, copias la parte correspondiente a la definición de LAMBDA (sin la llamada final) y la pegas en el Administrador de nombres.
En el Administrador de nombres, creas un nombre nuevo (por ejemplo, MiFuncionIVA, MiDescuento, MiMediaPonderada, etc.) y, en el campo «Se refiere a», introduces:
=LAMBDA(var1; var2; …; varN; cálculo)
A partir de ese momento, en cualquier celda de tu libro podrás llamar a la función escribiendo su nombre como si fuera una función integrada, pasando los valores de los parámetros en el mismo orden que los definiste.
Esto tiene dos ventajas claras: por un lado, haces más legibles tus hojas (en lugar de ver fórmulas kilométricas, ves una función con nombre descriptivo); por otro, centralizas la lógica en un único sitio. Si más adelante quieres cambiar el cálculo, basta con modificar la definición en el Administrador de nombres, y todas las fórmulas que la usen se actualizarán de forma automática.
Aspectos prácticos y consideraciones adicionales
Para sacarle partido de verdad a LAMBDA y sus funciones asociadas, conviene tener presentes algunos aspectos prácticos sobre su comportamiento y sus requisitos. En primer lugar, estas funciones forman parte de las funcionalidades modernas de Excel, por lo que necesitas una versión que ya incorpore las matrices dinámicas y las nuevas funciones LAMBDA, BYROW, BYCOL, etc. Normalmente están disponibles en las ediciones más recientes de Microsoft 365.
Ще однією актуальною темою є продуктивність: aunque LAMBDA y las funciones de recorrido son muy potentes, si las aplicas sobre rangos gigantescos con lógica muy compleja, el libro puede tardar algo más en recalcularse. Conviene diseñar las LAMBDA pensando en la eficiencia, evitando cálculos redundantes y aprovechando estructuras como LET para definir valores intermedios reutilizables.
También es crucial tener cierto orden a la hora de nombrar parámetros y funciones. Usar nombres descriptivos ayuda a entender la lógica cuando vuelvas al archivo meses después o cuando otra persona tenga que trabajar con tus libros. Un parámetro llamado importe, tasa, filaDatos o colValores es mucho más claro que x, y o a secas.
En lo que respecta al error #CALC!, suele aparecer cuando Excel no es capaz de calcular la expresión matricial o cuando la LAMBDA no devuelve un resultado válido. Verifica siempre que tu fórmula tenga una salida bien definida y, si trabajas con funciones de matrices, que las dimensiones sean coherentes (por ejemplo, que no estés combinando rangos de tamaños incompatibles sin una transformación adecuada).
Por último, aunque LAMBDA evita la necesidad de recurrir a VBA en muchos casos, no significa que lo sustituya por completo. Hay situaciones en las que la automatización mediante macros sigue siendo la mejor opción, pero para una cantidad enorme de cálculos personalizados y transformaciones de datos, LAMBDA y sus funciones asociadas te permitirán mantener todo el trabajo dentro del entorno de fórmulas convencional de Excel.
Gracias a estas posibilidades, quienes trabajan a diario con hojas de cálculo disponen ahora de herramientas mucho más flexibles para diseñar sus propios cálculos, resumir información por filas o columnas, recorrer matrices completa o parcialmente, generar acumulados detallados y crear matrices nuevas calculadas al vuelo, todo ello sin salir del lenguaje de fórmulas que ya conocen.
Зміст
- Qué es la función LAMBDA en Excel y para qué sirve
- Buenas prácticas al crear y probar funciones LAMBDA
- Relación de LAMBDA con las nuevas funciones de matrices
- Función BYROW: recorrer por filas y devolver resultados fila a fila
- Función BYCOL: aplicar LAMBDA por columnas
- Función MAKEARRAY (ARCHIVOMAKEARRAY): crear matrices calculadas
- Función MAP: transformación elemento a elemento
- Función SCAN: acumulados y resultados intermedios
- Función REDUCE: reducción a un solo valor acumulado
- Creación de funciones personalizadas con LAMBDA y el Administrador de nombres
- Aspectos prácticos y consideraciones adicionales
