Grabar fecha y hora cuando se ingresa un dato en Excel

Por   17/07/2012

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.

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 hora respectiva y seleccionamos la opción “Ver código”.

Se abre  una ventana de Visual Basic donde copiamos el siguiente código:

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 habrá Excel nuevamente tales valores no se actualizarán.

Contenido relacionado:
Compartirlo
Gerencie.com en su correo.

Suscríbase y nosotros colocaremos en su bandeja de entrada la mejor información que generamos diariamente.


Déjenos su opinión

35 Opiniones
  1. Francisco Dice:

    Hola, siguiendo el codigo he hecho una hoja donde controlo la entrada y salida de inventario, para la entrada del producto se digita el nombre del producto en la columna A y la fecha y hora aparecen en la coluna B y C respectivamente. En la misma hoja puse en la columna E la salida del producto deseando que apareciera automaticamente la fecha y hora en la columna F y G pero no logro agregar el codigo correcto, me imagino que si se puede pero obviamente no se como. Espero darme a entender. Gracias por cualquier ayuda.

    Responder
    • Francisco Dice:

      Bueno, pasaron varios días y vi que no habían respondido mi duda por lo cual me di a la tarea de tratar a prueba y error y al final obtuve el resultado que deseaba, a continuación dejo el código por si al alguien le sirve:

      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

      If Not Application.Intersect(Target, Range(“E:E”)) Is Nothing Then

      Range(“F” & Target.Row) = Date

      Range(“G” & Target.Row) = Format(Now, “hh:mm”)

      End If

      End Sub

      Gracias mil por la ayuda inicial, realmente me ha servido de mucho

      Responder
      • Karen Dice:

        Francisco, muchisimas gracias!!!

        Ten un lindo día!

        Responder
      • JUAN1 Dice:

        gracias, estaba intentanto y no podia y tu consejo me ayudo y mi situacion era similar.

        Responder
      • Roberto Dice:

        Mi estimado es usted como decimos acá una reverenda verga esto es un cumplido enorme en mi tierra.

        Responder
  2. Jesus Dice:

    Como se hace si necesito que ponga la hora solo cuando haya insertado una letra o numero especifico y no cualquier cosa?

    por ejemplo:

    Que ponga la hora en B1 solo cuando inserto una “X” en A1

    Responder
    • JOSE Dice:

      Private Sub Worksheet_Change(ByVal Target As Excel.Range)

      If Not Application.Intersect(Target, Range(“L:L”)) Is Nothing Then

      Range(“B” & Target.Row) = Date ‘fecha en la fila b al poner dato en la fila l

      Range(“C” & Target.Row) = Format(Now, “hh:mm”) ‘hora en la fila c al poner dato en la fila l

      End If

      If Not Application.Intersect(Target, Range(“M:M”)) Is Nothing Then

      Range(“D” & Target.Row) = Format(Now, “hh:mm”) ‘solo hora al poner dato en la fila m

      End If

      If Not Application.Intersect(Target, Range(“N:N”)) Is Nothing Then

      Range(“E” & Target.Row) = Format(Now, “hh:mm”) ‘solo hora al poner dato en fila n

      End If

      If Not Application.Intersect(Target, Range(“O:O”)) Is Nothing Then

      Range(“F” & Target.Row) = Format(Now, “hh:mm”) ‘ solo hora al poner dato en fila o

      End If
      End Sub

      les dejo este codigo por si a alguno le sirve despues de algunos intentos logre poner en 4 celdas para que se ponga el data osea hora diferente saludos

      Responder
  3. SANDRA Dice:

    misma pregunta que gustavo
    hola mira hice lo que explicas en esta pagina funciona bien pone la hora automáticamente al digitar en la otra celda pero cuando cierro todo el archivo o pago el pc y entro nuevamente el código esta en blanco y se ha perdido esta configuración,

    como debo guardarlo para que queden los datos

    Responder
  4. SANDRA Dice:

    gustavo en la parte DONDE PONES EL CODIGO DE LADO DERECHO TIENES QUE GUARDAR TE SALDRA UN MSJ QUE DICE QUE EL TIPO DE ARCHIVO CONTIENE MACROS O ALGO ASI, DALE OPCIÓN SI Y TE MANDARA A GUARDARLO DE NUEVO SOLO QUE ESTA VEZ TIENES QUE GUARDARLO COMO LIBRO DE EXCEL CON MACROS

    Responder
  5. José Aguero Dice:

    HOLA…. Buenas noches. Me pregunto si este código me funciona en access 2007; naturalmente que debo modificar su contenido; si alguien me presta su ayuda, sería excelente. Gracias.

    Responder
  6. alex Dice:

    quiero hacer lo mismo introducer a2 y que la fecha se ponga en automatic en b2 sin que se actualize y que si borro a2 la fecha tambien se borre me podrian ayudar con ese codigo

    Responder
    • Alvaro Dice:

      Hola, Tengo la misma pregunta, como puedo hacer que cuando borro la columna A1 (dato) se borre también la fecha en la columna B2 (fecha), ya que con este código no se borra automáticamente cuando borro A1.

      Responder
  7. Jose Daniel Dice:

    hola, yo quisiera saber si es posible hacer una tabla en la que se pueda insertar datos pero que ya no se puedan volver a modificar una vez guardado, es para llevar un registro diario de ingresos y egresos de dinero pero al no poder estar siempre presente yo, quiero que mis empleados puedan introducir los datos pero que una vez guardados ya no puedan volver a modificarlos, talvez con alguna opción de seguridad o por medio de algún macro o con otro programa como Access, en verdad lo agradecería mucho.

    Responder
  8. Jorge Dice:

    Como dice José Daniel, necesito que una vez que se generan los datos de fecha y hora en las columnas adyacentes, ya queden fijas y no se puedan modificar cuando ya guarde la planilla.

    Responder
    • edgcu1 Dice:

      Hola por favor me pueden ayudar, necesito ingresar en la columna A, distintos productos, pero solo cuando ingreso el producto “repuesto” , se debe desplegar la fecha actual FIJA, en la columna B.

      Responder
  9. Carlos Dice:

    Hola,

    Muchas gracias por tu ayuda despues de buscar y buscar realmente encontre lo que necesitaba.

    Responder
  10. Fernando Dice:

    Excelente tutorial.
    Solucionaron mi vida

    Responder
  11. Eder Dice:

    Buen día:
    Quisiera saber si se puede proteger esas celdas? lo intento pero luego me marca error.
    Necesito llevar un control de horarios pero que las personas que entren no modifiquen la hora a su conveniencia.

    Gracias

    Responder
  12. annie Dice:

    Como puedo hacer que los empleados marquen sus horarios por medio de un escaner que tenga contacto con excel ? alguien podria explicarme por favor o sacarme de dudas no habia hecho esto nunca y me piden ahora:(

    Responder
  13. Ricardo Dice:

    Hola

    Muy buen código, pero al agregar el dato el codigo completa la fecha y la hora, pero me agrega un dato de fecha y hora en la linea siguiente… como lo puedo solucionar?

    Saludos.

    Responder
  14. Jorge Dice:

    Buen día,

    Quisiera hacer esto en un Excel en Google Docs, solo que google docs se maneja con Java, tendras un script para hacer exactamente lo mismo pero en java.
    Si realizo la macro en excel y lo importo a google docs me elimina la macro porque la macro es en VBA

    Saludos,

    Responder
  15. ALAN Dice:

    Buenas tardes!

    Tengo que estar poniendo el código en mi libro cada vez que abro y cierro el archivo de EXCEL??

    Alguien sabe como solucionar este problema ya que quisiera que el código fuera permanente y por ende la función??

    Saludos!

    Responder
    • Néstor Dice:

      Guardar Como y en tipo eliges la opción Libro de Excel habilitado para Macros y listo.

      Saludos

      Responder
  16. walter Dice:

    Hola, necesito que me den una mano, tengo esta formula que me funciona de 10,

    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

    Necesito copiar esta formula y manejar 2 columnas, 1 Abierta y la otra Cerrada.
    En la columna G (Abierto) poner “J” Fecha y la “K” poner fecha.
    En la Columna H (cerrado) poner “L” Fecha y la “M” poner fecha.

    Intento compiar la formula, pero me tira error. por favor me dan una mano.. Muchísimas gracias!!!!

    Responder
  17. EMERSON Dice:

    ESTIMADO TENIA UNA DATA YA TRABAJADA CON FORMULAS Y LISTAS PERO AL QUERER AUTOMATIZARLA MAS USE ESTA OPCIÓN PERO AHORA UNA LISTA DESPLEGABLE QUE TENGO COMO (=INDIRECTO(C7) ) NO FUNCIONA, CREES QUE ME PUEDAS INDICAR COMO REVERTIR ESA OPCIÓN Y COMO DEJAR MI DATA COMO ESTABA, ESPERO TU RESPUESTA

    GRACIAS.

    Responder
  18. Fco Javier Garcia Dice:

    Funcionó perfectamente. (lo único que me costó localizar fue lo de “…la pestaña de la hora respectiva…” que no tenía nada claro que era.
    Muchas gracias por tu artículo.
    Saludos

    Responder
    • Fco Javier Garcia Dice:

      Reitero mi agradecimiento, Y quería hacer un inciso, Hay que guardar después el documento como “archivo de excel CON MACROS”, si no se hace así se perderá esta magnifica herramienta cuando cierres y quieras volver ha abrirlo.

      Responder
  19. Andy Dice:

    Hola, tengo una consulta.
    Con la formula inicial coloco los datos en la columna A y me tira la fecha en la columna B automáticamente, pero como podría hacer para que al eliminar el dato de la celda en la columna A también se elimine la fecha de la columna B? Alguien lo sabe?

    Responder
  20. Sol Dice:

    Buena tarde; He leído el artículo y me parece interesante, ya he puesto la fecha de esta forma en excel, pero ahora tengo una tabla automática y después de poner el código no me aparece nada, las columnas quedan en blanco.
    Espero que puedan apoyarme.
    Sólo quiero poner fecha y hora en las celdas de una columna al modificar las celdas correspondientes de otra fila.
    Gracias

    Responder
  21. Alex Dice:

    Buenas tardes.
    necesito ayuda, en un excel quisiera que me ponga la fecha del dato ingresado:

    A b
    codigo fecha
    001’100 que ponga la fecha y hora automatica

    023’322 que ponga la fecha y hora automatica

    hasta hay estoy bien pero lo que me falta es que si tiene dato repetido no ponga fecha

    002’100 fecha y hora automatica
    002’100 que no ponga nada
    003’122 fecha automatica
    004’123 fecha automatica
    002’100 que no ponga nada

    asi quisiera que funcione

    Responder
  22. antares Dice:

    Buenas,

    He modificado el código para intentar que al cambiar una celda de un rango de celdas establecido, imprima la fecha en una celda, y la hora en otra. El problema es que me da error al depurar en la 4 línea (error en el método ‘_Default’ de objeto ‘Range’), y la hoja se queda “colgada”. Si me podéis ayudar os lo agradecería. Mi código es el siguiente:

    Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Application.Intersect(Target, Range(“A1:AX41”)) Is Nothing Then

    Range(“E3”) = Date

    Range(“H3”) = Format(Now, “hh:mm”)

    End If

    End Sub

    Responder
    • antares Dice:

      He de añadir a mi anterior comentario que el código se aplica en varias hojas del mismo libro, variando el rango de celdas. No se si esto influye o no, pero por si acaso lo comento.

      Un saludo.

      Responder
  23. antares Dice:

    He de añadir al anterior comentario que el código lo que ejecutado en varias hojas del mismo libro cambiando los rangos de celdas. No se si esto influirá o no, pero por si acaso…

    Saludos

    Responder
  24. 7avo Dice:

    Cómo hago para que al ingresar otro dato en otra celda diferente me imprima ahora la hora de nuevo, es decir con tu código hice esto:

    Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Application.Intersect(Target, Range(“B:B”)) Is Nothing Then

    Range(“A” & Target.Row) = Date

    Range(“E” & Target.Row) = Format(Now, “hh:mm”)

    End If

    End Sub

    Pero despues quiero hacer esto:

    If Not Application.Intersect(Target, Range(“H:H”)) Is Nothing Then

    Range(“F” & Target.Row) = Format(Now, “hh:mm”)

    Solo que no he podido agregarlo, me marca un error si me pudieras ayudar con eso, gracias….

    Responder
En Gerencie.com está permitido opinar, criticar, discutir, controvertir, disentir, etc., pero debe hacerlo con respeto, sin insultar y sin ofender a otros.

Información legal aplicable para Colombia.