Cuando se trabaja, por ejemplo, en el control de horarios y turnos de un empleado, puede resultar útil hacer que Excel grabe automáticamente la fecha y hora en que se ingresa un dato o valor.
Cómo automatizar el ingreso de fechas en Excel.
Por ejemplo, si se ingresa un dato en la columna A, podemos hacer que la fecha o la hora se graben automáticamente en otra columna, lo cual agiliza el proceso, pues evita tener que digitar la fecha o la hora, que por su formato no es un proceso tan rápido.
Para ello, podemos hacer uso de un pequeño código en la hoja donde se introducirán los datos respectivos.
Vamos a hacer que, cuando se ingrese un dato en la columna A, en la columna B se grabe la fecha y en la columna C se grabe la hora de forma automática.
Para ello, damos clic con el botón derecho del mouse sobre la pestaña de la hoja respectiva y seleccionamos la opción “Ver código”.
Se abre una ventana de Visual Basic donde copiamos el código.
Macro para el ingreso automático de fecha y hora de cada registro.
El código de la macro a utilizar es el siguiente:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
Range("B" & Target.Row) = Date
Range("C" & Target.Row) = Format(Now, "hh:mm")
End If
End Sub
Guardamos y listo.
Con esto, cada vez que se introduzca un dato en cualquier fila de la columna A, la fecha y hora se insertarán de forma automática en las columnas B y C y permanecerán constantes; esto es, que cuando se abra Excel nuevamente, tales valores no se actualizarán.
Forma de citar este artículo (APA):
Gerencie.com. (2012, julio 17). Grabar fecha y hora cuando se ingresa un dato en Excel [Entrada de blog]. Recuperado de https://www.gerencie.com/gravar-fecha-y-hora-cuando-se-ingresa-un-dato-en-excel.html
¿Cómo replicar la misma macro en otra columna de la misma hoja (tabla)? Es decir, poner datos en la columna D y que me salga la fecha en la columna E y F. Gracias.
Para replicar la misma macro en otra columna de la hoja, puedes modificar el código que has proporcionado para que se adapte a las columnas D, E y F. A continuación te muestro un ejemplo del código modificado:
Private Sub Worksheet_Change(ByVal Target As Range)
‘ Verificar si el cambio ocurrió en la columna A o D
If Not Application.Intersect(Target, Range(“A:A”)) Is Nothing Then
‘ Si el cambio está en la columna A, insertar fecha y hora en B y C
Range(“B” & Target.Row) = Date
Range(“C” & Target.Row) = Format(Now, “hh:mm”)
ElseIf Not Application.Intersect(Target, Range(“D:D”)) Is Nothing Then
‘ Si el cambio está en la columna D, insertar fecha y hora en E y F
Range(“E” & Target.Row) = Date
Range(“F” & Target.Row) = Format(Now, “hh:mm”)
End If
End Sub
Excelente, funciona correctamente. Sin embargo, yo utilizo un escáner y se ingresa el código en la celda seleccionada. No me completa la fecha ni la hora; tengo que dar doble clic a la celda para que aparezca el dato.
Me ayudaría muchísimo algún consejo con este problema.
Cuando escanea un código de barras en Excel, por lo general se ingresan los datos y luego se hace el salto a la siguiente celda. En ese caso puede utilizar una pequeña macro para que cuando complete el ingreso del código de barras haga automáticamente el ingreso de la fecha y hora actual.
Buenas tardes,
He probado el código y funciona perfectamente.
Muchas gracias.
Nos alegra saber que el código ha funcionado como esperaba. Si tiene alguna otra pregunta o necesita más ayuda, no dude en preguntar. ¡Saludos!
Hola, ¿cómo podría adaptarlo para que si pego valores en la celda C, también me tome bien la fecha? Porque solo los coloca si escribo en la celda, pero si copio y pego valores, estos no se registran correctamente.
Para que la fecha se registre correctamente cuando copia y pega valores en la celda C, debe usar un evento diferente. En lugar de Worksheet_Change, use Worksheet_SelectionChange. El código quedaría así:
Con este cambio ahora podrá copiar y pegar valores sin problema.
Muchas gracias por la información. ¿Cómo podría hacer lo mismo pero que me guarde ambos datos en la misma columna, separados por dos espacios?
Escribes la palabra “Now”. Ejemplo:
“`vba
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range(“A:A”)) Is Nothing Then
Range(“B” & Target.Row) = Now
End If
End Sub
“`
Muchas gracias por el aporte; sí funciona.
De nada. Nos alegra saber que la información le fue útil y que pudo resolver su inquietud. Si tiene más dudas, no dude en consultarnos.
Hola, ¿cómo podría hacer para que me aparezca la fecha solo cuando se escriba en la columna la palabra “Terminado”? Gracias.
Para que se muestre la fecha actual en una celda cuando escriba “Terminado” en otra celda, puede usar la siguiente fórmula: =SI(A1=”Terminado”,HOY(),””) Donde A1 es la celda donde escribe “Terminado”.