有没有excel公式来记录单元格的最后更改日期



我正在寻找一种方法,在不使用Worksheet_change事件的情况下,将单元格的最后更改日期保存在Excel中。例如,定义这样一个公式:

=LastChangeDate(A22) 

当小区A22发生变化时,当前日期显示在目标小区中

我制作了一个用户定义函数来实现这一点,但它还没有经过完全测试。使用此功能前请注意两点:
1-此函数显示保存文档(ctrl+s(或更改其他单元格后的结果
2-只更改目标单元格的地址,不更改此函数中的其他参数
事实上,我们在函数的参数中记录了目标单元格的最后一个值
请执行以下步骤:
1-打开MSExcel并生成新的";。xlsm";文件
2-按Alt+F11打开VBA窗口
3-制造新模块
4-将此代码复制到模块1:

Public Function LogDate(CellAddress As String, OldValue As String, DisplayDate As String) As String
Dim CellValue As String
CellValue = Range(CellAddress).Value
If CellValue = OldValue Then
LogDate = DisplayDate
Else
Dim Address As String
Address = Replace(CellAddress, "$", "")
DisplayDate = Now
Evaluate "ChangeFormula(""" + Application.Caller.Address(False, False) + """ , """ + Address + """ , """ + CellValue + """ , """ + DisplayDate + """)"

LogDate = DisplayDate
End If
End Function

Private Sub ChangeFormula(CurrentCellAddress As String, Address As String, CellValue As String, DisplayDate As String)
Range(CurrentCellAddress).Formula = "=LogDate(CELL(""address""," & Address & "),""" & CellValue & """,""" & DisplayDate & """)"
End Sub

4-点击细胞";A2〃;并在里面写下这个公式:

=LogDate(CELL("address",A1),"","")

目标单元地址是"0";A1〃;不要改变任何参数;A1〃;
现在当你改变";A1〃;单元格值,并保存文档(ctrl+s(或更改其他单元格,";A2〃;显示"的日期和时间;A1〃;更改。

最新更新