En este artículo 18 secciones
- Cómo guarda Excel la fecha y la hora.
- Fecha y hora actuales con fórmula.
- Fecha y hora fijas con el teclado.
- Unir y separar la fecha y la hora.
- Registrar la fecha y la hora al escribir un dato.
- Descargar los ejemplos.
- Macro de ejemplo.
- Preguntas frecuentes.
- ¿Cómo pongo la fecha y la hora en la misma celda?
- ¿Cuál es la fórmula para la fecha actual en Excel?
- ¿Cómo hago que la fecha no cambie al abrir el archivo?
- ¿Por qué la macro no registra la fecha cuando pego datos?
- ¿Puedo registrar la fecha solo cuando escriba «Terminado»?
- ¿Cómo separo la fecha de la hora?
- Artículos relacionados
Para poner la fecha y la hora actuales en una celda de Excel se usa la función AHORA, o los atajos de teclado si el valor debe quedar fijo. Y si lo que se busca es que Excel registre solo la fecha y la hora en que se escribe un dato, como en un control de pedidos o de turnos, se necesita una macro. ¿Cuál método conviene en cada caso?
Cómo guarda Excel la fecha y la hora.
Para Excel, una fecha es un número entero que cuenta los días desde el 1 de enero de 1900, y una hora es la fracción de un día: las 12:00 del mediodía son 0,5. Una celda con fecha y hora contiene las dos partes en un solo número. El 13 de octubre de 2026 a las 2:35 p. m. es 46308,607639: la parte entera es la fecha y la decimal, la hora.
Por eso, lo que se ve en la celda depende del formato. El mismo número puede mostrarse como 13/10/2026, como 14:35 o como 13/10/2026 14:35.
- Guía de propiedad horizontal
- Liquidador de renta personas naturales
- Liquidador de pensiones en Colpensiones
Fecha y hora actuales con fórmula.
Excel tiene dos funciones sin argumentos para la fecha actual:
=HOY()
=AHORA()
HOY devuelve solo la fecha y AHORA, la fecha y la hora. Para que AHORA muestre ambas en la misma celda, se aplica un formato personalizado: clic derecho, «Formato de celdas», «Personalizada», y en «Tipo» se escribe dd/mm/aaaa hh:mm. Si se prefiere el formato de 12 horas, dd/mm/aaaa h:mm AM/PM.
Estas funciones son volátiles: se actualizan cada vez que el libro se recalcula o se abre. Sirven para mostrar la fecha del día en un informe o para calcular la antigüedad de una factura, pero no para registrar cuándo ocurrió algo, porque al día siguiente mostrarán otra fecha.
Fecha y hora fijas con el teclado.
Para escribir la fecha o la hora actual como un valor que no cambia, se usan dos atajos:
- Ctrl + ; (punto y coma): escribe la fecha de hoy.
- Ctrl + Mayús + : (dos puntos): escribe la hora actual.
Para tener las dos en la misma celda, se presiona el primer atajo, se escribe un espacio y se presiona el segundo. En algunos teclados en español, el punto y coma y los dos puntos requieren la tecla Mayús, de modo que la combinación cambia; si el atajo no responde, conviene probar con Mayús.
Unir y separar la fecha y la hora.
Si la fecha está en una celda y la hora en otra, basta con sumarlas, porque una es la parte entera y la otra la decimal:
=A2+B2
Y para separarlas, la fecha es la parte entera y la hora, el resto de dividir entre 1:
=ENTERO(A2)
=RESIDUO(A2;1)
Cada resultado debe tener su formato: de fecha el primero y de hora el segundo. La diferencia entre dos horas, para calcular tiempos trabajados, se explica en el artículo sobre cómo calcular las horas trabajadas en Excel.
Registrar la fecha y la hora al escribir un dato.
En un control de pedidos, de turnos o de inventario suele necesitarse que, al escribir un dato en una columna, Excel deje registrada la fecha y la hora en que se escribió, y que ese valor no cambie después. Con fórmulas como =SI(A2<>"";AHORA();"") no se logra, porque AHORA se actualiza en cada recálculo. Hace falta una macro de evento, que se ejecuta sola cuando cambia la hoja.
Paso 1. Abrir el módulo de la hoja.
Se hace clic derecho sobre la pestaña de la hoja y se elige «Ver código». Se abre el editor de Visual Basic en el módulo de esa hoja, que es donde deben ir las macros de evento. Si el código se pega en un módulo estándar, no se ejecuta.
Paso 2. Pegar el código.
Este código escribe la fecha en la columna B y la hora en la columna C cada vez que se escribe un dato en la columna A:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim celda As Range
Dim cambios As Range
Set cambios = Intersect(Target, Me.Range("A:A"))
If cambios Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each celda In cambios.Cells
If Len(celda.Value) > 0 Then
If IsEmpty(celda.Offset(0, 1).Value) Then celda.Offset(0, 1).Value = Date
If IsEmpty(celda.Offset(0, 2).Value) Then celda.Offset(0, 2).Value = Time
Else
celda.Offset(0, 1).ClearContents
celda.Offset(0, 2).ClearContents
End If
Next celda
Application.EnableEvents = True
End Sub
Estas son las instrucciones principales:
- Intersect identifica las celdas de la columna A que cambiaron. Si el cambio fue en otra columna, la macro termina sin hacer nada.
- El ciclo For Each recorre cada celda modificada, de modo que la macro funciona también cuando se pegan o se rellenan varias filas a la vez.
- Date y Time escriben la fecha y la hora como valores fijos. La condición IsEmpty evita sobrescribirlas si el dato de la columna A se corrige después.
- Si se borra el dato de la columna A, también se borran la fecha y la hora.
- EnableEvents = False evita que el cambio que hace la propia macro vuelva a dispararla.
El libro se guarda como «Libro de Excel habilitado para macros (.xlsm)».
Variantes frecuentes.
Con pequeños cambios, el mismo código resuelve otras necesidades:
- Fecha y hora en una sola columna: se reemplazan las dos líneas de Date y Time por celda.Offset(0, 1).Value = Now, y se aplica a la columna B el formato dd/mm/aaaa hh:mm.
- Otra columna de control: se cambia "A:A" por la columna que se quiere vigilar, por ejemplo "D:D", y los desplazamientos de Offset por las columnas de destino.
- Fecha solo cuando el estado es «Terminado»: se agrega la condición If LCase(celda.Value) = "terminado" Then antes de escribir la fecha. El archivo de texto descargable incluye esta variante para la columna D.
Si los datos se ingresan con un lector de código de barras y la fecha no aparece, lo más probable es que el lector no envíe la tecla Enter al terminar la lectura, de modo que Excel no registra el cambio. La mayoría de los lectores permite configurar ese sufijo en su manual.
Descargar los ejemplos.
El archivo de Excel muestra AHORA, HOY, la unión y separación de fecha y hora y los formatos, y tiene una hoja de registro lista para recibir la macro. Descargar archivo.
Macro de ejemplo.
A continuación se deja la siguiente macro de ejejemplo:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim celda As Range
Dim cambios As Range
' 1. Fecha en B y hora en C cuando se escribe en la columna A
Set cambios = Intersect(Target, Me.Range("A:A"))
If Not cambios Is Nothing Then
Application.EnableEvents = False
For Each celda In cambios.Cells
If celda.Row > 4 Then
If Len(celda.Value) > 0 Then
If IsEmpty(celda.Offset(0, 1).Value) Then celda.Offset(0, 1).Value = Date
If IsEmpty(celda.Offset(0, 2).Value) Then celda.Offset(0, 2).Value = Time
Else
celda.Offset(0, 1).ClearContents
celda.Offset(0, 2).ClearContents
End If
End If
Next celda
Application.EnableEvents = True
End If
' 2. Fecha y hora en E solo cuando la columna D dice "Terminado"
Set cambios = Intersect(Target, Me.Range("D:D"))
If Not cambios Is Nothing Then
Application.EnableEvents = False
For Each celda In cambios.Cells
If celda.Row > 4 Then
If LCase(Trim(celda.Value)) = "terminado" Then
If IsEmpty(celda.Offset(0, 1).Value) Then
celda.Offset(0, 1).Value = Now
celda.Offset(0, 1).NumberFormat = "dd/mm/yyyy hh:mm"
End If
Else
celda.Offset(0, 1).ClearContents
End If
End If
Next celda
Application.EnableEvents = True
End If
End Sub
Preguntas frecuentes.
A continuación respondemos las preguntas frecuentes de nuestros lectores.
¿Cómo pongo la fecha y la hora en la misma celda?
Con =AHORA() y el formato personalizado dd/mm/aaaa hh:mm. Si debe quedar fija, con Ctrl + ;, un espacio y Ctrl + Mayús + :.
¿Cuál es la fórmula para la fecha actual en Excel?
=HOY() para la fecha y =AHORA() para la fecha y la hora. Ambas se actualizan cada vez que se recalcula el libro.
¿Cómo hago que la fecha no cambie al abrir el archivo?
Escribiéndola con Ctrl + ; o registrándola con una macro. Las funciones HOY y AHORA siempre se actualizan.
¿Por qué la macro no registra la fecha cuando pego datos?
Porque la versión original solo revisaba la primera celda modificada. La versión de este artículo recorre todas las celdas pegadas.
¿Puedo registrar la fecha solo cuando escriba «Terminado»?
Sí, agregando esa condición en la macro, como en la variante del archivo descargable. Una fórmula con HOY() no sirve, porque cambiaría todos los días.
¿Cómo separo la fecha de la hora?
Con =ENTERO(A2) para la fecha y =RESIDUO(A2;1) para la hora, cada una con su formato.