通过公式(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