我正在运行一组部分随机化的数据集,并尝试根据某些参数变化找到最佳解决方案。我需要“记录”某些解决方案,然后在每次重新计算随机变量时比较不同参数的不同结果。
我想做以下事情:
在 Sheet1 中,单元格 S255 是公式 =SUM(M252:S252) 的结果
我需要自动将该结果(Sheet1 S255)添加到 Sheet5 的 A 列(从 A1 开始)。
然后,每次重新计算公式并且结果发生变化时,我都需要将新结果添加到与前一个结果连续的行中(因此第二个结果将转到 A2,第三个结果将转到 A3,依此类推)。
寻找类似的案例我已经能够使用此事件来执行#1和#2:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet: Set ws = Sheets("Sheet5") 'declare and set the worksheet the data is to be copied into, amend the sheet name as required
If Target.Address = "$S$255" Then 'if anything changes in C6 or C9 in this sheet
ws.Range("A1").Value = Target.Parent.Range("S255") 'copy the value from cell C10 in this sheet to Sheet2 in cell E5
End If
End Sub
执行 #3 更具挑战性。哪些活动适合执行此操作?
提前感谢您的时间和理解!
答案1
你可以尝试这个代码:
Option Explicit
私有子工作表_计算()
Dim newValue As Range
Set newValue = Range("S255")
Dim oldValue As Variant
Dim x As Long
Dim ws1 As Worksheet: Set ws1 = Sheet5
Dim ws2 As Worksheet: Set ws2 = Sheet1
With ws1
x = .Cells(Rows.Count, 1).End(xlUp).Row
oldValue = .Cells(x, 1).Value
x = x + 1
If oldValue <> newValue Then .Cells(x, 1) = newValue
End With
子目录结束
它在 worksheet_calculate 事件上运行,但仅当值与上一次计算不同时才插入新值。它从 A2 开始,因此您可以在 A1 中放置标题,或者如果您确实想从 A1 开始,则可以对值进行测试。
HTH 贾斯汀