通过公式(Excel)更改较大单元格区域中的单元格时的时间戳
作为这个问题的后续,每当一个单元格通过单元格范围的公式更改时,我需要在相邻单元格中的时间戳。
我意识到这意味着构build一个数组来存储以前的值到下面的代码(实现相同,但只为一个单元格),并会感谢任何帮助实现这一点。
以下是适用于单个单元的代码
在Sheet1单元格A1中,放入此公式
=Sheet2!A1+1
现在在一个模块粘贴这个代码
Public PrevVal As Variant
将其粘贴在“表单代码”区域中
Private Sub Worksheet_Calculate() If Range("A1").Value <> PrevVal Then Range("B1").Value = Format(Now, "dd/mm/yyyy hh:mm:ss") PrevVal = Range("A1").Value End If End Sub
最后在ThisWorkbook Code区域粘贴这个代码
Private Sub Workbook_Open() PrevVal = Sheet1.Range("A1").Value End Sub
你可以保留以前的值在一个Dictionary
而不是一个数组。 要使用字典,您需要添加对Microsoft脚本运行时库的引用
(工具>参考> Microsoft脚本运行时库)
标准模块
Public PrevVal As Dictionary
ThisWorkbook模块
Private Sub Workbook_Open() Dim r As Range Set PrevVal = New Dictionary For Each r In Worksheets("Sheet1").Range("A1:A10") PrevVal.Add Item:=r.Value, Key:=r.Address Next r End Sub
工作表模块
Private Sub Worksheet_Calculate() Dim v As Variant For Each v In PrevVal.Keys() If Range(v).Value <> PrevVal(v) Then Range(v).Offset(0, 1).Value = Format(Now, "dd/mm/yyyy hh:mm:ss") PrevVal(v) = Range(v).Value End If Next v End Sub