下午好,
我正在一张有数据表的Excel工作表上工作。此数据代表我部门希望跟踪的几个指标。每当有人要用新数据填充表时,单元格中的先前数据都会丢失。
有人如何创建一个单独的工作表,您可以在其中自动存储该表的所有值?我的意思是,当在一个表单元格中进行更改时,新值将自动存储在另一个表中,该表将保留该单元格的所有值(旧值和新值)吗?我尝试了“跟踪更改”,但不确定是否很喜欢这种方式。
有谁知道一种更有效的方式来做到这一点?例如通过宏?
谢谢!
(我正在使用移动设备,因此目前无法提供非常充实的答案。)
我已经为此编写了代码。我的目的是跟踪由多个用户编辑的关键工作表上的所有更改。如果对数据的来源存在争议,我可以查看日志。这里有一些VBA片段会派上用场。
Worksheet_Change
每次更改工作表时都会触发事件。
If Not Intersect(Target, Range("A1:G12")) Is Nothing
会告诉您已更改的单元格是否在您关心的范围内。
将要登录的值存储到数组中会更快,并且它们将日志表上的某个范围设置为等于该数组,而不是分别设置日志表中的每个单元格。
a一下,看看你能走多远。明天我会更冗长一些。
第二天编辑
这是一些代码,它将在其中包含代码的A1:G12
任何工作表上监视范围。如果r
是已更改的行,则代码会将所有内容从中复制Ar:Gr
到代码名称为的工作表中shtLog
。(代码名称是VBA中显示的名称,而不是您在Excel中看到的选项卡上的名称。)这应该使您朝正确的方向前进。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Integer
Dim c As Integer
Dim arr(1 To 1, 1 To 12)
If Not Intersect(Target, Range("A1:G12")) Is Nothing Then
r = Target.Row
For c = 1 To 12
arr(1, c) = Cells(r, c).Value
Next
With shtLog
.Range(.Cells(.UsedRange.Rows.Count + 1, 1), .Cells(.UsedRange.Rows.Count + 1, 12)) = arr
End With
End If
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句