Hace unos días uno de nuestros seguidores nos escribió para preguntar , cómo se podía convertir un texto del estilo 14AUG2019 en una fecha del estilo 14/08/2019
Para poder hacer esto deberemos desglosar el texto en partes y así poder trabajar con él y después convertirlo en una fecha.
Partamos de la premisa que el formato siempre será el mismo. DDMMMAAAA, dos espacios para la fecha, considerando que los días del 1 al 9 deberán llevar un 0 delante. Los tres siguientes valores serán para el mes indicando Jan; Feb; Mar; Apr; May; Jun; Jul; Aug; Sep; Oct; Nov; Dec para cada uno de los meses del año y después el año que tendrá siempre 4 dígitos.
Para poder realizar esta práctica se puede hacer de diferentes formas, vamos a ir viendo algunas de ellas y así cada uno puede quedarse con la que mejor se adapta a sus necesidades.
Primero de todo, vamos a ver si podemos desglosar el código en partes para tener por separado el día, el mes y el año. Para eso vamos a utilizar la función EXTRAE con la que dividiremos en diferentes celdas cada parte del código. Así por ejemplo, si tenemos el código en la celda A1, introduciremos en la celda B1 la función =EXTRAE(A1;1;2) con lo que obtendremos el día, en la C1 la función =EXTRAE(A1;3;3) para el mes y en la D1 para el año =EXTRAE(A1;6;4)
Para poder saber a que mes corresponde AUG estaría bien poder tener una tabla en algún lugar de la hoja de Excel que no nos moleste mucho para poder trabajar y que tuviéramos todos los meses. Así por ejemplo de la celda N1 a la N12 vamos a introducir los valores Jan; Feb; Mar; Apr; May; Jun; Jul; Aug; Sep; Oct; Nov; Dec uno en cada celda. Escogemos la columna N porque en nuestro caso está alejado del resto de datos de la hoja y así no nos molesta para trabajar. También podemos escoger la opción de introducir esta tabla de datos en otra hoja.
Ahora para poder saber a que mes hace referencia el valor que hemos extraído y tenemos en la celda C1 deberemos utilizar la función COINCIDIR
Así por ejemplo en la celda C2 introduciremos la función =COINCIDIR(C1;N1:N12;0) y como resultado en este caso obtendremos un 8 que corresponde al mes de agosto.
Como sería muy engorroso tener que hacer esto con cada uno de los valores y estamos utilizando muchas celdas separadas para obtener la fecha, vamos a ir reduciendo el número de celdas intermedias que utilizamos. Así por ejemplo vamos a unir las funciones que encontramos en la celda C1 y la C2 para conseguir todo en una sola celda.
Para ello cogemos la fórmula que nos da el valor final que deseamos obtener y que se encuentra en la celda C2, =COINCIDIR(C1;N1:N12;0) y vemos que hace referencia a la celda C1 donde también hay una fórmula =EXTRAE(A1;3;3)
Para unir las dos fórmulas tan solo debemos sustituir el argumento que hace referencia a la función C1 de la función COINCIDIR por todo el contenido de la celda C1 y así podremos prescindir de ella.
La función quedaría así =COINCIDIR(EXTRAE(A1;3;3);N1:N12;0). Esta función ya podemos ponerla en la celda C1 y obtendremos como resultado el mismo 8 que conseguíamos con dos funciones diferenciadas.
Ahora ya tenemos el día, el mes y el año del valor 14AUG2019. Solo nos falta unirlo para tener un formato de fecha correcto. Esto lo haremos con la función FECHA
La función la situaremos en la celda E1 y quedaría de la siguiente forma =FECHA(D1;C1;B1) como resultado obtendremos 14/08/19 que ya es un formato de fecha correcto con el que podremos trabajar.
Ahora y para simplificar imagina que no queremos separar el día, mes y año en tres celdas diferentes y solo queremos una, que es la fecha final. Pues lo que debemos hacer es unificar todas las funciones en una sola.
Como siempre nos debemos partir de la función que nos ha dado el resultado válido e ir unificando el resto de funciones que se encuentran en las celdas a las que hace referencia.
En este caso trabajaremos con las funciones de las siguientes celdas
B1 =EXTRAE(A1;1;2)
C1 =COINCIDIR(EXTRAE(A1;3;3);N1:N12;0)
D1 =EXTRAE(A1;6;4)
Y la principal que será la que está en la celda E1 =FECHA(D1;C1;B1)
Ahora sustituiremos cada uno de los argumentos que hay en la función de la celda E1 por las funciones que hay dentro de cada una de las celdas correspondientes y nos quedará la función de la siguiente forma:
=FECHA(EXTRAE(A1;6;4);COINCIDIR(EXTRAE(A1;3;3);N1:N12;0);EXTRAE(A1;1;2))
Toda esta función nos descodificará el valor 14AUG2019 en un formato fecha real con el que podremos trabajar sin problemas.
Por ejemplo pégalo en la celda B1 y así podrás arrastrar hacia abajo para poder descifrar el resto de códigos que vayas introduciendo en las celdas de la columna A1.
Eso sí… antes de arrastrar para abajo y pensando que la tabla de los meses no se deberá mover y para que siempre haga referencia de la celda N1 a la N12 deberemos fijar los valores con los caracteres $
La fórmula final quedará de la siguiente forma:
=FECHA(EXTRAE(A1;6;4); COINCIDIR(EXTRAE(A1;3;3);$N$1:$N$12;0); EXTRAE(A1;1;2))
Aún podemos ir un poco más allá y evitar trabajar con la tabla de los meses en la hoja actual y así tener una función que podamos utilizar en cualquier hoja de Excel sin tener que estar pendientes de tener el listado de meses en la misma o en otra hoja.
Para ello sustituiremos la referencia de las celdas N1 a la N12 por los valores que hay dentro de la tabla y los introduciremos dentro de la misma función quedando de la siguiente forma:
=FECHA(EXTRAE(A1;6;4); COINCIDIR(EXTRAE(A1;3;3);{"Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";"Aug";"Sep";"Oct";"Nov";"Dec"};0); EXTRAE(A1;1;2))
Deja una respuesta