Necesita la fecha de hoy para completar automáticamente una celda cuando se ingresan datos en otra celda

Necesita la fecha de hoy para completar automáticamente una celda cuando se ingresan datos en otra celda

Me gustaría que las celdas C5-C39 se completen automáticamente con la fecha de hoy cada vez que se ingresan datos en las celdas B5-B39.

Intenté hacerlo funcionar usando =TODAY()pero no sé cómo estructurar la fórmula.

Respuesta1

Yo diría que la forma más sencilla de hacerlo sería con una función definida por el usuario. Esa función se actualizará cuando cambie cualquier celda a la que hace referencia, por lo que no tendrá que vincularla a ningún evento.

Una función para tu problema sería:

Function Updating_Date(dependent_cell as Range) As Date
  Updating_Date = Date
End Function

Después de haber colocado ese código en un módulo de su libro de trabajo, simplemente puede ingresarlo =Updating_Date(B5)y C5luego copiarlo. Eso debería hacer que la fecha en C5 se actualice cada vez que cambien los valores en la columna C.

Para que la fecha solo aparezca si la celda de la columna B no está en blanco, puede aplicar una fórmula if en la celda de la columna C, como mencioné enla otra pregunta que hiciste. Simplemente ingrese el mismo condicional que mostré allí (es decir, ISBLANK(B5)) y haga que el valor de retorno sea una cadena vacía ( "") si la condición es verdadera y la UDF ( Updating_Date(B5)) si la condición es falsa.

Respuesta2

Lo siguiente coloca la fecha de hoy en la celda "B" cada vez que hay un cambio en la celda "A":

Private Sub Worksheet_Change(ByVal Target As Range)
' Auto Date
Dim Cell As Range
For Each Cell In Target
    If Cell.Column = Range("A:A").Column Then
        If Cell.Value <> "" Then
            Cells(Cell.Row, "B").Value = Int(Now)
        Else
            Cells(Cell.Row, "B").Value = ""
        End If
    End If
Next Cell
End Sub

Este código debe colocarse en el módulo VBA de la hoja de trabajo donde desea que se produzca este comportamiento.

Respuesta3

Puedes hacer esto sin VBA. Necesitaba que mi columna C se completara con la fecha de hoy según la columna B y tuviera un valor ingresado. Esta fórmula funciona para insertarlo correctamente.

=IF(ISBLANK(B2)," ",NOW())

Coloqué esto en la celda C2 ya que ahí es donde comencé mi columna C. Puede colocar esto en la celda de cualquier columna en la que esté comenzando. Luego, solo asegúrese de que mi referencia B2 se reemplace con la columna y celda en la que se ingresa su valor. Por ejemplo, si su celda de inicio es F3, debe cambiar la fórmula para que diga

=IF(ISBLANK(F3), " ",NOW()). 

Y si su celda de fecha correspondiente es K3, coloque la fórmula allí. (Puedes arrastrar la fórmula al resto de las celdas de la columna una vez que esté en la primera).

Esta fórmula mantiene las celdas de fecha vacías hasta que se ingrese un valor en la celda de "inicio". Una vez que se ingresa ese valor, se agrega la fecha. Si se elimina el valor, Excel eliminará automáticamente la fecha. Así que no es perfecto, pero si necesita algo más sofisticado, probablemente necesite un experto en Excel o un programa que se encargue de esto por usted.

Respuesta4

AFIK, deberás hacer esto a través de VBA. Puede crear una función que observe los cambios en su hoja de trabajo, filtre solo los cambios en las celdas B5-B39 y actualice las celdas en C en consecuencia.

ACTUALIZACIÓN: Probablemente sabrá cómo ingresar a VBA usando alt-F11.

Haga doble clic en el objeto de Excel llamado Hoja1 o cualquier hoja que le interese (en la lista de árbol en la parte superior izquierda) para acceder al código de esa hoja.

Seleccione Hoja de trabajo y Cambiar en los 2 menús desplegables. Entonces obtienes un código que se parece a:

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

La variable "Destino" ahora está disponible, que es una referencia a la celda que cambia.

Agregue algo de código entre esas líneas:

debug.Print Target

y presione Ctrl-G para mostrar la ventana inmediata.

Realice algunos cambios en la hoja de trabajo y vuelva al código; verá que los datos que ingresó aparecen en la ventana Inmediato.

Ahora cambie el código para decir if Target.y verá un menú desplegable de posibles propiedades relacionadas con la variable de destino.

Con un par de cambios, puedes obtener esto:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 2 And (Target.Row > 4 And Target.Row < 40) Then
        Debug.Print Target.Value
    End If

End Sub

Que ahora solo imprime cambios en el rango que le interesa.

Si desea saber cómo cambiar un valor en una celda, puede grabar una macro en la que lo haga manualmente y examinar el código. Ojalá tengas suficiente para continuar ahora. Avísame si no.

información relacionada