¿Te imaginas poder utilizar funciones recursivas directamente en Excel, la herramienta de hojas de cálculo más popular del mundo? Con la llegada de la función LAMBDA, el poder de la programación se ha integrado en nuestras planillas de forma revolucionaria. En este artículo, te mostraremos cómo aprovechar esta potente función para crear fórmulas que se auto-referencian y así poder resolver problemas complejos de manera elegante y eficiente. Acompáñanos en este recorrido lleno de ejemplos prácticos que transformarán la manera en que trabajas con Excel. ¡Descubre todo lo que LAMBDA puede hacer por ti!
¿Alguna vez te has encontrado en la situación de necesitar una fórmula en Excel que resuelve un problema de manera recursiva? Si es así, ¡tenemos la solución perfecta para ti! En este artículo, exploraremos la función LAMBDA recursiva en Excel y te mostraremos ejemplos prácticos para que puedas entender cómo funciona y cómo puedes aplicarla en tus propios proyectos. Así que no pierdas más tiempo y descubre todo lo que necesitas saber sobre esta poderosa función que te ayudará a agilizar tus tareas en Excel. ¡Comencemos!
El objetivo de este tutorial es explicar el concepto de función recursiva y demostrar el enfoque genérico para la creación de Lambdas recursivas en Excel. Exploraremos cada aspecto en profundidad para que le resulte más fácil seguirlo y reproducirlo en sus hojas de trabajo.
Con la introducción de la función LAMBDA, los cálculos recursivos en Excel están disponibles para cualquiera, no sólo para los programadores de VBA. En pocas palabras, ahora puedes construir fórmulas que se comportan como un lenguaje de programación y te permiten lograr mucho, con tan poco y tan rápido 🙂
Tenga en cuenta que los ejemplos analizados en este tutorial implican que ya conoce la sintaxis y los usos básicos de LAMBDA. De lo contrario, tiene sentido comenzar con lo esencial: cómo escribir y usar LAMBDA en Excel.
Función LAMBDA recursiva
Para asegurarnos de que todos estén en la misma página, primero determinemos qué es una función recursiva.
En informática, recursividad es un método para resolver un problema en el que una función se llama a sí misma directa o indirectamente. Tal función se llama recursivo. Básicamente, una función recursiva funciona mediante iteración y encuentra una solución a un problema mayor resolviendo instancias más pequeñas del mismo problema.
Actualmente, LAMBDA es la única función de Excel que admite la recursividad, lo que le permite crear soluciones compactas y elegantes para problemas complejos sin codificación.
En VBA, la recursividad generalmente se realiza usando un Para… Siguiente o Haz… mientras bucle. LAMBDA normalmente se basa en la función IF para probar una condición booleana y repetirla si la condición es VERDADERA o FALSA.
Aquí está la estructura de una función LAMBDA recursiva en su forma más simple:
=LAMBDA(x, y,…, ‘declarar parámetros
SI(prueba_lógica,   ‘probar la condición
MiLambda(), ‘recurre si la condición se evalúa como VERDADERA
valor_si_falso) ‘salir si la condición se evalúa como FALSA
)
El punto clave es evitar que las llamadas recursivas continúen para siempre. Para ello deberá proporcionar la caso final (también llamado el caso de detencióno caso base). Si no se proporciona ningún punto de salida, una fórmula seguirá iterando hasta que su computadora falle; es broma, por supuesto, arrojará un #NUM. error.
En comparación con las funciones no recursivas, las Lambdas recursivas son más difíciles de escribir, probar y depurar. Se parece al viejo acertijo del huevo y la gallina: para que una función funcione correctamente, debe llamarse a sí misma; para llamarse a sí misma, la función debe funcionar correctamente 🙂
Ejemplo de LAMBDA recursivo para eliminar caracteres no deseados
Al importar datos de fuentes externas, a menudo pueden colarse caracteres basura y es necesario encontrar una manera de limpiar sus datos de alguna manera.
La función Reemplazar todo puede eliminar todas las apariciones de un personaje determinado reemplazándolos con nada, pero solo puede tratar con un personaje a la vez.
Mucho más rápido y conveniente será enumerar todos los caracteres no deseados en alguna celda y eliminarlos de una sola vez usando una fórmula. Un LAMBDA recursivo es exactamente lo que necesita:
=LAMBDA(data, chars, IF(chars<>»», RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), «»), RIGHT(chars, LEN(chars) -1)), data))
Nuestra función Lambda personalizada se llama Eliminar caracteres y requiere dos parámetros de entrada:
- Datos – una celda o una serie de celdas a limpiar.
- caracteres – los caracteres no deseados para eliminar. Puede proporcionarse en forma de cadena de texto o referencia de celda. En una celda, los caracteres deben enumerarse sin espacios, a menos que quieras erradicar los espacios también.
En un nivel alto, esto es lo que hace la función:
El Eliminar caracteres La función recorre la lista de exclusión (caracteres) y purga un carácter a la vez. Antes de cada llamada recursiva, la función SI evalúa el resto caracteres. Si la cadena no está vacía (caracteres<>«»), la función se llama a sí misma. Tan pronto como se haya manejado el último carácter, el proceso de iteración finaliza: la fórmula regresa datos en su forma actual y sale.
La lógica inversa también funcionará: si el caracteres la cadena está vacía (chars=»»), luego devuelve el presente datos y salir; de lo contrario, llame al Eliminar caracteres función:
=LAMBDA(data, chars, IF(chars=»», data, RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), «»), RIGHT(chars, LEN(chars) -1))))
Sea cual sea el enfoque que elijas, el resultado será exactamente el mismo:
>
Consejo. La misma tarea se puede realizar fácilmente con expresiones regulares. Para obtener más detalles, consulte Excel Regex para eliminar caracteres especiales.
Cómo escribir LAMBDA recursivo en Excel
Me gustaría comenzar con un descargo de responsabilidad 🙂 No existe una forma documentada de crear Lambdas recursivos en Excel, lo cual se explica dado que la función es completamente nueva. Compartiré mi método, que puede resultarle útil o no.
Crea la fórmula central
Generalmente, se comienza escribiendo las fórmulas principales que emulan el comportamiento deseado de su función LAMBDA. En nuestro caso, el objetivo final es reemplazar caracteres específicos con nada, y Excel ya tiene un instrumento ideal para esto: la función SUSTITUIR:
SUSTITUIR(texto, texto_antiguo, texto_nuevo, [instance_num])
Para SUSTITUIR, necesitamos suministrar:
- Texto – el texto en el que sustituir caracteres. En nuestro caso, es una cadena de texto en A2.
- Texto_antiguo – el personaje a reemplazar. Necesitamos verificar cada carácter en D2, y es lógico comenzar con el que está más a la izquierda. La función IZQUIERDA puede recuperarlo fácilmente por nosotros:
LEFT(D2, 1)
- Nuevo texto – el personaje a reemplazar texto_antiguo con. Obviamente, es una cadena vacía («»).
- núm_instancia es opcional y no es necesario en nuestro caso, por lo que se omite.
Como resultado, nuestra fórmula central toma esta forma:
=SUBSTITUTE(A2, LEFT(D2, 1), «»)
>Debido a que SUSTITUTO solo puede realizar un reemplazo a la vez, debe ejecutarse tantas veces como caracteres haya en la lista de exclusión en D2. La pregunta es: ¿cómo lo obligamos a manejar el siguiente personaje? Y aquí está la respuesta:
Con cada iteración, eliminaremos un carácter de la izquierda, es decir, el carácter que ya se ha examinado. La función DERECHA en combinación con LEN puede hacer eso fácilmente:
=RIGHT(D2, LEN(D2) -1)
Preste atención a que cada SUSTITUTO posterior utiliza el resultado del SUSTITUTO anterior como texto argumento, es decir, realiza el reemplazo no en la cadena original (A2), sino en la cadena devuelta por las funciones SUSTITUIR anteriores (B2):
>Convierta la fórmula principal en una función LAMBDA
Como recordará, se supone que nuestra función personalizada debe llamarse Eliminar caracteresy tendrá 2 parámetros: datos y caracteres.
Su trabajo es indicarle a la función cómo calcular cada parámetro:
- Datos – la cadena en la que sustituir caracteres. Lo proporciona la fórmula SUSTITUIR.
- caracteres – los personajes a eliminar. Lo proporciona la fórmula CORRECTA.
Lo que debe hacer es simplemente colocar las dos fórmulas discutidas anteriormente dentro del Eliminar caracteres función separándolos con comas o cualquier carácter que se use para separar los argumentos de una función en su Excel (determinado por el Separador de lista establecer en Ajustes regionales).
RemoveChars(SUBSTITUTE(A2, LEFT(D2, 1), «»), RIGHT(D2, LEN(D2) -1))
Teniendo en cuenta que LAMBDA opera con parámetros y no con referencias de celda, el siguiente paso es cambiar A2 a datos y D2 a caracteres:
RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), «»), RIGHT(chars, LEN(chars) -1))
El Eliminar caracteres la función está hecha. Lamentablemente, no hay forma de probarlo en este momento y solo podemos confiar en los resultados de las pruebas anteriores y realizar la depuración más adelante si es necesario.
Hacer que la función LAMBDA se llame a sí misma de forma recursiva
Esta es la parte clave que convierte una «fórmula teórica» en una solución funcional.
Al igual que con cualquier Lambda personalizado, comienza declarando los parámetros:
=LAMBDA(data, chars,
A continuación, evalúa una determinada condición y, según el resultado, invoca la recursividad o sale. Estableciendo un punto de salida es la consideración crucial. Si no haces eso, tu fórmula no funcionará correctamente porque nunca saldrá del circuito.
En nuestro caso, la función SI comprueba si el caracteres lista no esta en blanco (caracteres<>«»). Si es verdad (caracteres no está vacío), llamamos a la función RemoveChars. Si es FALSO (caracteres está vacío), volvemos datos le da su forma actual y sale.
Este es el enfoque genérico:
=LAMBDA(data, chars, IF(chars<>»», RemoveChars(…), data))
Y esta es la verdadera fórmula en su forma completa:
=LAMBDA(data, chars, IF(chars<>»», RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), «»), RIGHT(chars, LEN(chars) -1)), data))
Alternativamente, puedes comprobar si caracteres está en blanco (caracteres=»»). Si es VERDADERO, regresa datos y salir; si es FALSO, llame a RemoveChars.
El concepto:
=LAMBDA(data, chars, IF(chars=»», data, RemoveChars(…)))
La fórmula completa:
=LAMBDA(data, chars, IF(chars=»», data, RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), «»), RIGHT(chars, LEN(chars) -1))))
Asigne un nombre a su función definida por LAMBDA
Nombrar Lambdas recursivos no es diferente de nombrar sus pares no recursivos:
- En el Nombre cuadro, escriba el nombre de la función: Eliminar caracteres.
- Deje el alcance configurado en Libro de trabajo.
- En el Se refiere a pegue su fórmula LAMBDA asegurándose de que comience con un signo de igualdad.
- Opcionalmente, ingrese la descripción de los parámetros en el Comentarios cuadro para mayor referencia.
- Hacer clic DE ACUERDO para guardar su nueva función.
>
Cómo utilizar un LAMBDA recursivo en Excel
Es la parte más fácil 🙂 Una vez que su función Lambda obtenga un nombre, podrá usarla como cualquier otra función nativa.
Desde la perspectiva del usuario final, la sintaxis de nuestra función personalizada es tan simple como esta:
RemoveChars(datos, caracteres)
Por ejemplo, para limpiar los datos en A2:A10 (datos), escribimos los caracteres no deseados en D2 (caracteres), y luego ingrese la siguiente fórmula en B2:
=RemoveChars(A2:A10, D2)
Como probablemente sepa, en Excel 356, cada fórmula es una fórmula de matriz dinámica por naturaleza. Entonces, al ingresar la fórmula en una sola celda (B2), inmediatamente obtenemos todos los resultados (este comportamiento se llama derrame).
>Si prefiere el comportamiento tradicional de «una fórmula, una celda», utilice una referencia de celda para datos (A2) y bloquee el caracteres dirección de celda ($D$2) con el signo $ para evitar que cambie al copiar la fórmula:
=RemoveChars(A2, $D$2)
La fórmula anterior va a B2 y luego la arrastras hasta B10:
>En lugar de enumerar los caracteres que se van a eliminar en una celda, puede proporcionarlos directamente a la fórmula como una cadena de texto:
=RemoveChars(A2:A10, «_^*/&%»)
>
Nota. Debido a que la función SUSTITUIR utilizada en la fórmula principal es distingue mayúsculas y minúsculas, nuestra función personalizada trata las letras mayúsculas y minúsculas como caracteres diferentes. Si desea eliminar un determinado carácter, diga «x», independientemente de la letra mayúscula, luego incluya tanto «x» como «X» en el caracteres cadena.





KerbresseX: ¡Qué bueno leer sus experiencias! Yo también me sumé a la onda de LAMBDA y cuando logré implementar una función recursiva para calcular factoriales, casi me muero de la emoción, jaja. Los ejemplos del artículo realmente me abrieron los ojos, ahora no puedo dejar de pensar en las posibilidades que tengo con Excel. ¡A seguir experimentando!
Salvijamzy: ¡Totalmente de acuerdo con ustedes! La verdad es que cuando probé la función LAMBDA recursiva, pensé que estaba descubriendo la pólvora, jaja. Nunca había tenido tanto poder en mis hojas de cálculo. Los ejemplos fueron clave, porque antes no entendía cómo funcionaba. ¡A seguir dándole!
Silakingsa: Me alegra que te haya ayudado, ¡a mí también me pasó lo mismo! Cuando hice mi primera función LAMBDA recursiva, me sentí un hacker de Excel, jeje. Es una herramienta increíble y con esos ejemplos se vuelve más fácil. ¡A seguir experimentando!
Mauvivutspb: ¡Excelente artículo! Yo apenas empecé a jugar con la función LAMBDA y me voló la cabeza. La verdad, cuando intenté hacer una suma recursiva me sentí como un genio. Gracias por los ejemplos, me sirvieron un montón para entender mejor cómo potenciar mis hojas de cálculo.