Excel VBA - 将公式结果复制到另一张表中的单元格 + 每次重新计算公式时在连续行中添加连续的公式结果

Excel VBA - 将公式结果复制到另一张表中的单元格 + 每次重新计算公式时在连续行中添加连续的公式结果

我正在运行一组部分随机化的数据集,并尝试根据某些参数变化找到最佳解决方案。我需要“记录”某些解决方案,然后在每次重新计算随机变量时比较不同参数的不同结果。

我想做以下事情:

  1. 在 Sheet1 中,单元格 S255 是公式 =SUM(M252:S252) 的结果

  2. 我需要自动将该结果(Sheet1 S255)添加到 Sheet5 的 A 列(从 A1 开始)。

  3. 然后,每次重新计算公式并且结果发生变化时,我都需要将新结果添加到与前一个结果连续的行中(因此第二个结果将转到 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 贾斯汀

相关内容