通过公式(Excel)更改较大单元格区域中的单元格时的时间戳
问题描述:
作为this问题的后续问题,每当通过单元格范围的公式更改单元格时,我需要在相邻单元格中添加时间戳。通过公式(Excel)更改较大单元格区域中的单元格时的时间戳
我知道这意味着构建一个数组来存储以前的值到下面的代码(它实现了相同的,但只为一个单元格),并会感谢任何帮助实现这一点。
下面是单个电池的工作原理代码...
在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代码区粘贴此代码
Private Sub Workbook_Open()
PrevVal = Sheet1.Range("A1").Value
End Sub
答
你可以保持在Dictionary
以前的值,而不是一个数组。要使用字典,你需要添加一个引用到微软脚本运行时库
(工具>参考> 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
相反,可以使用worksheet_change事件来检测片材(数据的任何范围)的变化和理智行变更在加时间戳。您可以使用Target.row来识别已更改的行。 – ArindamD
@ArindamD,Worksheet_Change未检测到公式更改 – CallumDA
在两个位置都更改为'PrevVal = application.sum(Range(“A1:A9”)。Value)“。然后,如果A1:A9中的任何值发生变化,则所有值的总和都会改变。 – Jeeped