Convertir fechas de texto a fecha real con LAMBDA y REGEX
Un miembro de la comunidad está aprendiendo LAMBDA y comparte su primera función personalizada: extraer una fecha real a partir de un texto con formato "ddmmaa". Su versión inicial usa EXTRAE para separar día, mes y año, y luego FECHA para reconstruir la fecha:
``
=LAMBDA(date;LET(
convert_fecha;date;
FECHA(EXTRAE(date;5;2)+2000;EXTRAE(date;3;2);EXTRAE(date;1;2))))
`
Leo responde con dos alternativas mucho más compactas. La primera usa EXTRAE con un array constante {1;3;5} para extraer las tres partes de golpe, las une con UNIRCADENAS y fuerza la conversión a número con el doble negativo:
`
=LAMBDA(date;--UNIRCADENAS("/";; EXTRAE(date;{1;3;5};2)))
`
La segunda aprovecha REGEXREEMPLAZAR para reformatear el texto directamente con grupos de captura:
`
=LAMBDA(date;--REGEXREEMPLAZAR(date;"(\d{2})(\d{2})(\d{2})";"$1/$2/$3"))
`
Leo también aporta un matiz importante: la versión original con FECHA` tiene la ventaja de autocorregir valores inválidos (por ejemplo, un mes 13 pasa al mes 1 del año siguiente), lo cual puede ser útil como validación implícita. Las versiones compactas, en cambio, fallarían con datos incorrectos. Todo depende de lo que se necesite en cada contexto.
El problema: una fecha atrapada en un texto
Un miembro de la comunidad, dando sus primeros pasos con LAMBDA, compartió su primera función personalizada: convertir un texto con formato "ddmmaa" (día, mes y año pegados, seis cifras) en una fecha real con la que Excel pueda operar. Es un problema clarísimo y muy común cuando importas datos de sistemas antiguos o de exportaciones que traen las fechas como cadenas.
Punto de partida: EXTRAE + FECHA
Su versión inicial es directa y perfectamente válida. Separa día, mes y año con EXTRAE según su posición y reconstruye la fecha con FECHA:
`` =LAMBDA(fecha; FECHA( EXTRAE(fecha;5;2)+2000; EXTRAE(fecha;3;2); EXTRAE(fecha;1;2) ) ) ``
Se leen las dos cifras del año (posición 5), se les suma 2000, y se toman mes y día de sus posiciones. FECHA monta el valor final. Funciona a la primera.
Versión compacta 1: EXTRAE con array constante
Leo propone dos alternativas más cortas. La primera extrae las tres partes de golpe usando un array constante de posiciones, las une con barras mediante UNIRCADENAS y fuerza la conversión a número con N():
`` =LAMBDA(fecha; N(UNIRCADENAS("/";; EXTRAE(fecha;{1;3;5};2)))) ``
El array {1;3;5} le dice a EXTRAE que arranque en las posiciones 1, 3 y 5 y coja dos caracteres en cada una, devolviendo día, mes y año a la vez. UNIRCADENAS los pega con una barra y el N() convierte el texto resultante en una fecha real (Excel reconoce el formato con barras). Toda la lógica en una línea.
Versión compacta 2: REGEXREEMPLAZAR
La segunda aprovecha las funciones REGEX modernas. Con REGEXREEMPLAZAR reformatea el texto en un solo paso: captura tres grupos de dos cifras cada uno y los reordena insertando barras entre ellos, para luego forzar la conversión a número. El patrón usa tres grupos de captura y una plantilla de reemplazo que los recoloca como día, mes y año separados por barras. Es la vía más elegante cuando ya tienes REGEX disponible en tu versión de Excel.
El matiz importante: validación implícita
Leo cierra con una observación que marca la diferencia entre "corto" y "correcto". La versión original con FECHA tiene una ventaja oculta: autocorrige valores inválidos. Si el texto trae un mes 13, FECHA lo reinterpreta como enero del año siguiente, lo que puede servir como validación implícita o, al menos, evita un error. Las versiones compactas, en cambio, fallarían o darían una fecha sin sentido con datos incorrectos.
La lección: no siempre la fórmula más corta es la mejor. Depende de si tus datos vienen limpios o no.
Funciones clave
LAMBDA: empaqueta la conversión en una función reutilizable con nombre.EXTRAE: separa día, mes y año por posición, tanto de una en una como con un array constante.FECHA: reconstruye la fecha y, de regalo, autocorrige valores fuera de rango.UNIRCADENASyN: la vía compacta, uniendo con barras y coercionando a número.REGEXREEMPLAZAR: reformatea el texto con grupos de captura en un solo paso.
Conclusión
Convertir texto en fechas es una de esas tareas que aparecen constantemente y que casi todo el mundo resuelve a mano. Este hilo enseña tres formas de automatizarlo con LAMBDA —de la más didáctica a la más compacta— y, sobre todo, deja claro que elegir entre ellas depende de la calidad de tus datos. Ese tipo de matiz, más allá de la fórmula, es lo que hace tan valiosa la comunidad de Influexcel.
Más contenido de Excel en InflueXcel
- Cuenta clientes y cervezas en Excel 🍺 Caso "La Taberna: El Poney Pisador" (Nivel 1) Tutorial🍺 Noche cerrada en Bree. Frodo, Sam, Merry y Pippin cruzan la puerta de El Poney Pisador huyendo de los Jinetes Negros: la sala está a reven
- SUMAR.SI.CONJUNTO en acción con El Señor de los Anillos 🃏 El 21 de La Comarca TutorialLo que practicamos en este caso: • Contar cartas por palo con CONTAR.SI • Sumar valores con condiciones (SUMAR.SI / SUMAR.SI.CONJUNTO) • Apl
- Reto de Excel: El cumpleaños de Bilbo 🎂 | CONTAR.SI y SUMAR.SI desde cero (Nivel 1) TutorialEn La Comarca se celebra el cumpleaños número 111 de Bilbo Bolsón: cerveza, pasteles, fuegos artificiales… y algún curioso escondido tras el
- ¡Excel PowerQuery Hack! Conexiones con rutas relativas en 10 minutos! Tutorial¿Harto de ajustar las conexiones en PowerQuery cada vez que compartes tu archivo de Excel? 🙄 Convierte las conexiones de PowerQuery con ruta
- Mejora un 90% el rendimiento de Power Query con SQLite TutorialPower Query es una herramienta potente para consolidar, combinar y calcular datos, pero cuando trabajamos con millones de registros y calcul
- Reorganizar tablas mensuales: cruzar por persona buscando en vertical y en horizontal CasoNuevo caso interesante de la comunidad. Juan tenía varias tablas mensuales (a veces más de una en el mismo mes) y quería reorganizarlas por
- Un dato de todas las hojas, escrito una sola vez CasoEsta semana surgió en la comunidad un reto muy habitual cuando un libro tiene muchas hojas: mostrar el valor de la celda B3 de cada hoja, in
- Un índice de hojas que se genera solo: HYPERLINK en rangos desbordados CasoEsta semana surgió en la comunidad un pequeño "expediente X". Un miembro llegó tras ver un vídeo con una idea clara en la cabeza: montar una
- Reformatear un código alfanumérico al teclear: de NN1234567 a NN-12345-67 CasoEsta semana surgió en la comunidad una duda muy práctica: cómo conseguir que al escribir un código tipo NN1234567 (dos letras seguidas de si
- Reclasificación contable: duplicar cada fila con una conversión distinta por columna, en un único bloque CasoInteresante reto contable planteado esta semana por un miembro de la comunidad. Juan parte de una tabla de apuntes contables (rango C7:P10)