Conversión de fecha a cadena de Excel


125

En una celda en la hoja de Excel tengo un valor de fecha como:

01/01/2010 14:30:00

Quiero convertir esa fecha en texto y también quiero que el texto se vea exactamente como la fecha. Por lo tanto, 01/01/2010 14:30:00debe tener un valor de Fecha, 01/01/2010 14:30:00pero internamente debe ser Texto.

¿Cómo puedo hacer eso en Excel?


66
Muchos programadores presumidos dirían que Excel no es un entorno de programación, por lo que podrían cerrar esta pregunta. Espero que no, pero solo para advertirte.
Nick Fortescue

44
Es posible que Excel no sea un IDE completo, pero si recibe datos en Excel y necesita resultados en Excel, alguna programación de VBA tiene todo tipo de sentido.
brichins

Respuestas:


241
=TEXT(A1,"DD/MM/YYYY hh:mm:ss")

(24 horas)

=TEXT(A1,"DD/MM/YYYY hh:mm:ss AM/PM")

(tiempo estándar)


3
Referencia completa de la función TEXTO especialmente para saber cómo formatos: consulte la Guía para los formatos de fecha y hora en esta página office.microsoft.com/en-us/excel-help/...
CodeA

Cuando trato de hacer esta conversión, hay un "#AD?" texto y dice que algo anda mal.
AloneInTheDark

1
@AloneInTheDark Cuando sigue el enlace de codea, los formatos funcionan pero solo si tiene un sistema operativo Windows que usa los formatos en inglés. El mío usa los formatos holandeses, lo que significa que, por ejemplo, "DD / MM / AAAA hh: mm: ss" se convierte en "DD / MM / JJJJ uu: mm: ss" porque en holandés, 'año' es 'jaar' y 'hora' es 'uur', es decir, otras letras iniciales (mientras que 'día', 'mes', 'minutos' y 'segundos' comienzan con las mismas letras en holandés e inglés). Básicamente, traduzca las letras iniciales de los formatos al idioma de su sistema operativo.
Sem Vanmeenen

3
Y la conversión opuesta se hace conDATEVALUE("01/01/2010")
Zenadix

¿Alguna forma de usar el formato que ya estoy usando para mostrar la fecha sin tener que especificarlo?
palswim

8

Aquí hay un enfoque de VBA:

Sub change()
    toText Sheets(1).Range("A1:F20")
End Sub

Sub toText(target As Range)
Dim cell As Range
    For Each cell In target
        cell.Value = cell.Text
        cell.NumberFormat = "@"
    Next cell
End Sub

Si está buscando una solución sin programación, la pregunta debe trasladarse a SuperUser.


6

Aquí hay otra opción. Utilice el asistente integrado de 'Texto a columnas' de Excel. Se encuentra en la pestaña Datos en Excel 2007.

Si tiene una columna seleccionada, los valores predeterminados para el tipo de archivo y los delimitadores deberían funcionar, luego le solicitará que cambie el formato de datos de la columna. Al elegir el texto, se fuerza el formato de texto para asegurarse de que no se almacene como una fecha.


4

En algunos contextos, usar un carácter 'de antemano funcionará, pero si guarda en CSV y carga de nuevo, esto es imposible.

'01/01/2010 14:30:00

4

No se pudo obtener la fórmula TEXT () para funcionar

La solución más fácil fue copiar y pegar en el Bloc de notas y volver a Excel con la columna establecida en Texto antes de volver a pegar

O puedes hacer lo mismo con una fórmula como esta

=DAY(A2)&"/"&MONTH(A2)&"/"&YEAR(A2)& " "&HOUR(B2)&":"&MINUTE(B2)&":"&SECOND(B2)


1
Upvoted, porque a mi entender, este es el único método de trabajo que no está sujeto a la configuración del idioma. Si intentas compartir tu trabajo, usar TEXT () te traerá problemas. Incluso dentro de un país (por ejemplo, Alemania), encontrará personas con configuraciones en alemán e inglés.
Dr. V

1
muchas gracias y voto a favor! Me está funcionando, porque no puedo usar = TEXTO (fórmulas de la biblioteca de Python)
lestat_kim

1

Si no está utilizando la programación, haga lo siguiente (1) seleccione la columna (2) haga clic con el botón derecho y seleccione Formato de celdas (3) Seleccione "Personalizado" (4) Justo debajo de "Tipo:" escriba dd / mm / aaaa hh: mm : ss


0

En Excel 2010, la respuesta de marg solo funcionó para algunos de los datos que tenía en mi hoja de cálculo (se importó). La siguiente solución funcionó en todos los datos.

Sub change()
    toText Selection
End Sub

Sub toText(target As range)
Dim cell As range
Dim txt As String
    For Each cell In target
        txt = cell.text
        cell.NumberFormat = "@"
        cell.Value2 = txt
    Next cell
End Sub

0

No tengo idea sobre el año de publicación de la pregunta; Puede ser viejo ahora. Entonces, espero que mi respuesta sea más una referencia para futuras preguntas similares después de mi publicación.

No sé si alguien ya ha dado una respuesta similar a la que estoy a punto de dar, lo que podría resultar, creo, ser el más simple, más directo y más efectivo: si alguien ya lo ha hecho, me disculpo , pero no lo he visto. Aquí, mi respuesta usando CStr en lugar de TEXTO:

Asumiendo la celda A1 contiene una fecha, y usando el código VBA:

Dim strDate As String

'Convert to string the value contained in A1 (a date)
strDate = CStr([A1].Value)

A partir de entonces, puede manipularlo como cualquier cadena ordinaria utilizando funciones de cadena (MID, LEFT, RIGHT, LEN, CONCATENATE (&), etc.)


-1

La respuesta seleccionada no funcionó para mí, ya que Excel todavía no estaba convirtiendo el texto hasta la fecha. Aquí está mi solución.

Digamos que en la primera columna, A, tiene datos del tipo 2016/03/25 21:20:00pero se almacena como texto. Luego, en la columna B, escriba =DATEVALUE(A1)y en la columna C, escriba =TIMEVALUE(A1).

Luego, en la columna D, =B1+C1agregue los formatos numéricos de la fecha y la hora.

Finalmente, copie los valores de D en la columna E haciendo clic derecho en la columna E y seleccione Paste Special -> Paste as Values.

Resalte los valores numéricos en la columna E y cambie el tipo de datos a la fecha. Prefiero usar una fecha personalizada del formulario YYYY-MM-DD HH:MM:SS.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.