Se podría llenar la celda dependend (D2) por una función definida por el usuario (función de macro de VBA) que toma el valor de la celda C2 como parámetro de entrada, devolviendo la fecha actual como salida.
Tener C2 como parámetro de entrada para la UDF en D2 le dice a Excel que necesita reevaluar D2 cada vez que C2 cambia (es decir, si el cálculo automático de las fórmulas está activado para el libro).
EDIT:
Aquí hay un código:
Para la UDF:
Public Function UDF_Date(ByVal data) As Date
UDF_Date = Now()
End Function
Como fórmula en D2:
=UDF_Date(C2)
que tendrá que dar el D2-Cell un formato de fecha y hora, o mostrará un representante numérico tación del valor de la fecha.
Y puede ampliar la fórmula sobre el rango deseado arrastrándola si mantiene la referencia de C2 en la fórmula D2 relativa.
Nota: Esto todavía podría no ser la solución ideal, ya que cada vez que Excel actualiza el libro de la fecha en D2 se restablecerá al valor actual. Para hacer que D2 solo refleje la última vez que se modificó C2, tendría que haber algún tipo de seguimiento de los valores anteriores de C2. Esto podría implementarse, por ejemplo, en la UDF proporcionando también la dirección al lado del valor del parámetro de entrada, almacenando los parámetros de entrada en una hoja oculta, y comparándolos con los valores previos cada vez que se llama al UDF.
Adición:
Aquí está un ejemplo de implementación de una UDF que rastrea los cambios de los valores de celda y devuelve la fecha y hora en que se detectó los últimos cambios. Al usarlo, Tenga en cuenta que:
El uso de la UDF es el mismo que el descrito anteriormente.
El UDF funciona solo para rangos de entrada de celda única.
La célula valores se realiza un seguimiento mediante el almacenamiento del último valor de celda y el fecha-hora en que se detecta el cambio en las propiedades del documento de la libro. Si la fórmula se utiliza en grandes conjuntos de datos, el tamaño del archivo puede aumentar considerablemente, ya que para cada celda rastreada por la fórmula aumenta los requisitos de almacenamiento (último valor de celda + fecha del último cambio). Además, tal vez Excel es no es capaz de manejar cantidades muy grandes de propiedades del documento y el código podría frenar en un cierto punto.
Si se cambia el nombre de una hoja de trabajo, se pierde toda la información de seguimiento de las celdas allí contenidas.
El código puede frenar para valores de celda para los cuales la conversión a cadena no es determinista.
El código siguiente es no probado y debe considerarse solo como prueba del concepto . Úselo bajo su responsabilidad.
Public Function UDF_Date(ByVal inData As Range) As Date
Dim wb As Workbook
Dim dProps As DocumentProperties
Dim pValue As DocumentProperty
Dim pDate As DocumentProperty
Dim sName As String
Dim sNameDate As String
Dim bDate As Boolean
Dim bValue As Boolean
Dim bChanged As Boolean
bDate = True
bValue = True
bChanged = False
Dim sVal As String
Dim dDate As Date
sName = inData.Address & "_" & inData.Worksheet.Name
sNameDate = sName & "_dat"
sVal = CStr(inData.Value)
dDate = Now()
Set wb = inData.Worksheet.Parent
Set dProps = wb.CustomDocumentProperties
On Error Resume Next
Set pValue = dProps.Item(sName)
If Err.Number <> 0 Then
bValue = False
Err.Clear
End If
On Error GoTo 0
If Not bValue Then
bChanged = True
Set pValue = dProps.Add(sName, False, msoPropertyTypeString, sVal)
Else
bChanged = pValue.Value <> sVal
If bChanged Then
pValue.Value = sVal
End If
End If
On Error Resume Next
Set pDate = dProps.Item(sNameDate)
If Err.Number <> 0 Then
bDate = False
Err.Clear
End If
On Error GoTo 0
If Not bDate Then
Set pDate = dProps.Add(sNameDate, False, msoPropertyTypeDate, dDate)
End If
If bChanged Then
pDate.Value = dDate
Else
dDate = pDate.Value
End If
UDF_Date = dDate
End Function
"He intentado con muchos códigos VBA". Pregúntanos [¿qué has intentado?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) –