31

Reto 02: Extraer fecha de cualquier celda

El mes pasado inauguré la sección “El Reto de Ayuda Excel” que tuvo bastante participación. Puedes verlo aquí.

El reto de este mes consiste en extraer la fecha de una celda. Esta fecha está integrada en un texto y en diferentes posiciones. La solución que propongas debe cumplir estas tres condiciones:

  • Sólo puedes utilizar una fórmula (que al copiarla hacia abajo muestre todas las soluciones).
  • Ninguna celda debe contener errores.
  • Si la celda no contiene ninguna fecha, debe aparecer el texto “No hay fechas”.

Descárgate el archivo para hacer las pruebas. Al responder, sólo escribe la primera fórmula. La probaré arrastrándola hacia abajo y, si funciona, será una respuesta válida…

¡Inténtalo!

 

Extraer fecha de celda1

Si se te hace muy cuesta arriba puedes descubrir las siguientes pistas:

Funciones que podrías utilizar: EXTRAE, MAX, BUSCAR, IZQUIERDA, DERECHA, SI.ERROR, FECHANUMERO, LARGO, ENCONTRAR…

Existen también varias soluciones utilizando fórmulas matriciales.

“?” es el comodín para sustituir un carácter y “*” sirve para reemplazar varios caracteres.

Aquí tienes el archivo para que practiques:

 

RETO 2
Título: RETO 2 (496 clics)
Tamaño: 9 KB

¡Compartir es vivir!
Sergio
 

La destreza y el perfeccionismo quizá sean las dos virtudes que me permiten ayudar a mis clientes a facilitar las tareas administrativas de sus negocios.

Haz clic aquí para dejar un comentario 31 comentarios
Juanma - 14/12/2015

Hola Sergio, esta es mi propuesta:

=SI.ERROR(EXTRAE($A2;ENCONTRAR(“/”;$A2;1)-2;10);”No hay fechas”)

Responder
    Sergio - 14/12/2015

    Funciona perfectamente, Juanma. Muchas gracias.

    Responder
John Jairo V - 14/12/2015

¡Hola a todos!

Puede ser un más exacta esta fórmula a la hora de extraer la fecha:

=SI.ERROR(–EXTRAE(A2;HALLAR(“??/??/????”;A2);10);”No Hay Fechas”)

Bendiciones!

Responder
    Sergio - 14/12/2015

    John, con el signo – delante de EXTRAE, no funciona bien. Si lo elimino, funciona correctamente.

    Responder
Gerson Pineda - 14/12/2015

Sergio

Una mas

=SI.ERROR(–EXTRAE(A2,COINCIDIR(1,INDICE(–ESNUMERO(–EXTRAE(A2,FILA(INDIRECTO(1&”:”&LARGO(A2))),1)),,),),10),”NO HAY FECHA”)

De hecho lo ensayamos aqui https://www.ayudaexcel.com/foro/threads/extraer-numeros-de-cadena-alfanumerica-mejorada.15305/

Saludos a todos

Responder
John Jairo V - 14/12/2015

Sergio… ese signo lo interpretó la página como un menos… y quise poner un doble signo negativo (para convertir el texto a número). Si no le pones el signo, la fecha quedará extraida como un texto, no como fecha reconocida por excel. Bendiciones!

Responder
    Sergio - 14/12/2015

    Ok, gracias! Efectivamente, parecía un signo negativo.

    Responder
Silvia Quispe - 14/12/2015

Hola a todos…

Como vi esos excelentes aportes… , me puse a inventar suposiciones..; disculpa Sergio, es que tras lo que ya había, no se me ocurría otra forma..

Es así:
¿Que pasaría si los formatos son 18-02-2015 15-02-15 16/17/2015 6/12/01 ..?
(no está pensado para formato texto, solo formatos de fecha con números y tampoco está pensado en si el “/” o el “-“, se repetirían en otra parte del texto)…

Este sería mi aporte: **Fórmula de entrada Matricial:

= ESPACIOS(EXTRAE(SUSTITUIR(” “&A2,” “,REPETIR(” “,10)), COINCIDIR(45,BUSCAR(CODIGO(EXTRAE(SUSTITUIR(A2,” “,REPETIR(” “,10)),FILA($1:$1000),1)),{45;49}),0)+7,11))

Tomar en cuenta mi separador de argumentos es la coma, y también mi separador de “la matriz constante: {45;49} “, en mi caso es punto y coma.

Este es un texto de Hector Miguel:
con mi win7, español, región: México y Excel en español, las matrices constantes se separan…
xl-2007: filas => columnas => ;
xl-2010: filas => ; columnas => ,
(quizá por esto ultimo asumí que se “estandarizaba” con la notación USA)

saludos,
Silvia

Responder
    Sergio - 14/12/2015

    Guauuu!!! Muchas gracias por tu aporte. Funciona perfectamente

    Responder
Adebua - 14/12/2015

=Extrae(A2;encontrar(“16/12/2015”;A2;1);10)

Responder
    Sergio - 15/12/2015

    Adebua, tu solución solamente sirve para la primera celda. Al copiar las celdas hacia abajo, no encontrará la fecha que pones en la función ENCONTRAR.

    Responder
Sebastián Encina - 15/12/2015

Hola Sergio, dejo aquí mi solución propuesta:

=SI.ERROR(DERECHA(IZQUIERDA(A2;HALLAR(“/”;A2;1)+7);10);”NO HAY FECHA”)

Mi separador de listas es el punto y coma ( ; )

Responder
Enrique Cianguerotti - 15/12/2015

=+SI.ERROR(EXTRAE(A2;ENCONTRAR(“/”;A2;1)-2;10);”No hay fechas”)

Responder
    Sergio - 15/12/2015

    Gracias, Enrique. La respuesta que propones ya había sido dada por otra persona…

    Responder
Juan - 15/12/2015

Hola Sergio la formula que yo he realizado es {=SI.ERROR(EXTRAE(A2;MIN(SI.ERROR(ENCONTRAR({0;1;2;3;4;5;6;7;8;9};A2);””));CONTAR(1*EXTRAE(A2;FILA($1:$99);1))+2);”no hay fecha”)}
a lo mejor es un poco larga pero es la que siempre uso, y me va muy bien.
un saludo

Responder
    Sergio - 15/12/2015

    ¡Muy buena tu propuesta, Juan!

    Responder
Armando Roa - 15/12/2015

=SI.ERROR(FECHANUMERO(IZQUIERDA(DERECHA(A2,LARGO(A2)-(HALLAR(“/”,A2)-3)),10)),”Sin Fecha”)

Responder
    Sergio - 15/12/2015

    Muy bien, Armando. Además, tu propuesta formatea el resultado como fecha.

    Responder
Antonio Perez - 15/12/2015

Sergio, esta es mi propuesta de formula
=MED(A2;HALLAR(“/”;A2;1)-2;10)
es valida para todos los casos propuestos
saludos
Antonio

Responder
    Sergio - 15/12/2015

    Aunque te falta la validación en caso de que la celda no contenga una fecha, es perfectamente válida.

    Quien lo necesite, deberá cambiar la función MED por EXTRAE.

    Responder
cdelarosam - 16/12/2015

Hola, Las soluciones que he visto no controlan que se rechacen fechas inválidas por ser letras (p.e. 31/12/2rr3, aa/11/2000, 01/mm/2000). Con las siguiente fórmula se controlarían estos casos, dándo los ejemplos anteriores como erroneos.

==SI(O(ESERROR(–EXTRAE(A2;ENCONTRAR(“/”;A2)-2;2));ESERROR(–EXTRAE(A2;ENCONTRAR(“/”;A2;ENCONTRAR(“/”;A2)+2)-2;2));ESERROR(–EXTRAE(A2;ENCONTRAR(“/”;A2;ENCONTRAR(“/”;A2)+2)+1;4)));”No hay fechas”;EXTRAE(A2;ENCONTRAR(“/”;A2)-2;10))

Saludos

Responder
    Sergio - 16/12/2015

    ¡Muy buena! El único contra que veo en tu fórmula es que tarda bastante en calcularse, pero funciona perfectamente. Gracias.

    Responder
alicia nuñez - 16/12/2015

me da jmuchisima verguenza saber tan poco, solo pude resolverlo con formulas distintas xa cada caso, las ultimas dos con izquierda y derecha anidadas con hallar, y el resto con un mix de anidadas, pero no encontre una formula unica, leyendo las respuestas me doy cuenta de que en hallar tenia que usar “/”,y eso hubiera viabilizado algo, seguire aprendiendo, gracias x enseñarme

Responder
    Sergio - 16/12/2015

    Alicia, precisamente la razón por la que he decidido comenzar con estos retos es porque todos aprendemos de los demás.

    Responder
Pepe Perez - 16/12/2015

Sergio, me funciona con :
=SI.ERROR(FECHANUMERO(EXTRAE(A2;HALLAR(“/”;A2)-2;10));”No hay fecha”)

Responder
    Sergio - 16/12/2015

    Pepe, muchas gracias.También funciona muy bien!

    Responder
cdelarosam - 17/12/2015

Efectivamente, la fórmula de Pepe Pérez ha sido la mejor de todas, pues controla que la fecha sea una fecha válida, rechazando por ejemplo 23/13/2015. ¡Buen aporte!

Responder
Chava - 12/05/2018

Estimados. Me puse a revisar una a una sus propuestas, sin embargo, no se tomo en cuenta un texto como este {SEAT KIT_8″, RTFE/GRAPHITE/316 SS, F 28/04/2018 50842} donde se interpone “/” dentro del texto. La única opción que resulto satisfactoria fue la de John Jairo, con su opción si se pudo extraer la fecha.

Mi propuesta a la opción de John es pasarla de texto a fecha usando la función “VALOR” y formatear la celda con formato de fecha corta.

=SI.ERROR(VALOR(EXTRAE(A2,HALLAR(“??/??/????”,A2),10)),”No hay fechas”)

De este modo se extrae la fecha 28/04/2018 como valor de fecha y no como texto.

Gracias John, me ayudaste mucho.
Profesor Sergio usted también.

Responder
Emmanuel - 12/10/2018

Se me ocurrió esta, funciona para fecha registrada como texto y como número.

=SI.ERROR(SI(ESNUMERO(A8),TEXTO(A8,”DD/MM/YYYY”),EXTRAE(A8,(ENCONTRAR(“/”,A8)-2),10)),”No hay fechas”)

Responder

Escribe una respuesta:

Powered by WishList Member - Membership Software