【问题标题】:is there any excel formula to record cell last change date?是否有任何excel公式来记录单元格上次更改日期?
【发布时间】:2021-04-03 10:04:41
【问题描述】:

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

=LastChangeDate(A22) 

当单元格 A22 发生变化时,当前日期显示在目标单元格中​​

【问题讨论】:

  • 不,你必须使用Worksheet_Change
  • 没有宏就无法做到这一点。
  • @GSerg 感谢您的回复。但是我做了一个公式,如果没有 Worksheet_Change 似乎可以正常工作

标签: excel timestamp


【解决方案1】:

我创建了一个用户定义函数来做到这一点,但它没有经过完全测试。 使用此功能前注意两点:
1-此功能在您保存文档 (ctrl+s) 或更改其他单元格后显示结果
2-只更改目标单元格的地址,从不更改此函数中的其他参数
事实上,我们在函数参数中记录目标单元格的最后一个值
按着这些次序 :
1-打开 MSExcel 并制作新的“.xlsm”文件
2-按 Alt+F11 打开 VBA 窗口
3-制作新模块
4-将此代码复制到Module1:

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),"","")

目标单元格地址是“A1”不要改变除“A1”以外的任何参数
现在当您更改“A1”单元格值,并保存文档(ctrl+s)或更改其他单元格时,“A2”显示“A1”的日期和时间会发生变化。

【讨论】:

  • 您正在使用a trick 来强制 Excel 执行它不打算执行的操作(即允许工作表函数更改工作表)。它是not going to end well。您不应该从工作表调用的函数中更改工作表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-23
  • 2018-08-24
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多