Tengo un lote de datos con varias columnas cuya fecha tiene el formato siguiente:
31 de mayo de 2014.
Estoy tratando de encontrar una manera de convertirlo a un formato de fecha útil 31/05/2014. ¿Algunas ideas?
Respuesta1
Hay algunos buenos pasos para lograrlo. Esta es una forma de hacerlo usando fórmulas y celdas auxiliares. Si necesita hacer esto sin celdas auxiliares (es decir, no desea columnas adicionales), entonces debe mencionar esto y probablemente podría crear algo de VBA para realizar la tarea.
La primera tarea es dividir la fecha en 3 partes: el año, el mes y el día. Una vez que tengas esos tres, será sencillo volver a armarlos.
Por supuesto, esto supone que sus fechassiempresiga el formato de fecha estadounidense bastante idiota © de MMM-dd-yyyy.
Esto se hizo usando la página de Microsoft.Dividir texto entre columnas usando funcionescomo ejemplo.
Dividir el mes:
Esto se consigue utilizando lasearch
función para buscar el primero-
y la herramienta de divisiónLeft
para recortarlo.=LEFT(A1, SEARCH("-",A1,1)-1)
que regresa
May
de su ejemplo.Dividir el día: Es similar pero se requiere
un uso mucho más complicado de la función.MID
Necesitamos encontrar el primero y el segundo-
y luego restar la ubicación del primero del segundo para obtener la longitud del texto requerido. Este resultado es una función bastante larga:=MID(A1,SEARCH("-",A1,1)+1,SEARCH("-",A1,SEARCH("-",A1,1)+1)-SEARCH("-",A1,1)-1)
devuelve
SEARCH("-",A1,SEARCH("-",A1,1)+1)-SEARCH("-",A1,1)-1)
la longitud mientras queSEARCH("-",A1,1)+1
simplemente obtiene la primera ubicación. laMID
herramienta los corta y regresa23
de su ejemplo.Dividir el año:
la última herramienta que necesitamos es laRIGHT
herramienta.=RIGHT(A1,LEN(A1)-SEARCH("-",A1,SEARCH("-",A1,1)+1))
Esto simplemente obtiene la longitud de la cadena y luego la busca dos veces y devuelve todo lo que queda a la izquierda (o a la derecha).
El problema ahora es que todavía tienes el mes en un formato de texto inutilizable. Para que sea utilizable, necesitamos usar la DATEVALUE
herramienta para convertirlo. Esta herramienta no aceptará un mes por sí sola, pero aceptará una MMM YY
cadena. Lo que podemos hacer es analizar el texto del mes en un número después de concatenar un año en él.
Obtener el mes como un valor numérico:
por el bien del argumento, digamos que almacenamos la primera función en la celda B1.
DATEVALUE(B1 &" 01")
devolverá la cadena de valor de fecha que Excel usa internamente, luego podemos incluirla en unaMONTH
función para devolver el valor numérico del mes:MONTH(DATEVALUE(B1 &" 01"))
Luego podemos fusionar todo esto en una sola
DATE(year,month,day)
función y así convertirla en una fecha real que Excel pueda usar. El mes está en la celda B1, el día en la celda C1 y el año en D1 siguiendo el Stupid American Date Format™:DATE(D1, B1, C1)
Luego regresará
23/05/2014
a la celda.Si quieres ser realmente sofisticado, puedes seguir adelante y combinar todas las fórmulas anteriores en una sola.
=DATE(RIGHT(A1,LEN(A1)-SEARCH("-",A1,SEARCH("-",A1,1)+1)),MONTH(DATEVALUE(LEFT(A1, SEARCH("-",A1,1)-1)&" 1")),MID(A1,SEARCH("-",A1,1)+1,SEARCH("-",A1,SEARCH("-",A1,1)+1)-SEARCH("-",A1,1)-1))
Respuesta2
Otro enfoque simple es tomar una cuerda como31-mayo-2015y convertirlo en31-mayo-2015. Esta conversión nos permitirá utilizar elVALORFECHA()fórmula.
Entonces con datos enA1, enB1ingresar:
=DATEVALUE(SUBSTITUTE(MID(A1,FIND("-",A1)+1,2),"-","") & "-" & LEFT(A1,3) & "-" & RIGHT(A1,4))
Respuesta3
Sé que la pregunta ha sido respondida y agradezco todos los aportes. Me gustaría agregar esta otra opción por si a alguien le resulta útil:
=DATEVALUE(CONCATENATE(MID(A1,5,2),"-",LEFT(A1,3),"-",RIGHT(A1,4)))
Esto convertirá la fecha del formato 31 de mayo de 2014 al formato 31/05/2014. Observe que en mi caso específico los meses se ingresaron con solo tres letras (por ejemplo, julio)
¡Gracias!