Excel 2003:提取计算结果

时间:2012-02-21 00:31:42

标签: excel-vba excel-2003 excel-formula vba excel

我想知道是否有办法链接一个单元格,使其永久保存计算结果,这样即使计算输入发生变化,前一个结果仍然保存。

为了进一步说明,例如,当我们说第一种情况下我的计算是x + 2 = y和x = 1时。我希望能够链接一个单元格以保存结果y = 3以及输入x = 1,即使我更改了x的值。

可能的解决方案一起使用IF条件和PASTE SPECIAL命令,但我不确定如何对其进行编程以使其自动化。有没有办法用公式做到这一点?或者我必须冒险进入VBA?

2 个答案:

答案 0 :(得分:1)

  
    
      

可能的解决方案一起使用IF条件和PASTE SPECIAL命令,但我不确定如何对其进行编程以使其自动化。有没有办法用公式做到这一点?或者我必须冒险进入VBA?

    
  

这是一种不需要PASTE SPECIAL命令的方法。将代码粘贴到相关工作表代码区域中。请参阅快照1 。这只是一个例子。请根据您的要求进行更改。代码的作用是,它检查用户是否输入任何X值(单元格A2),如果用户确实捕获了它,则捕获Y的值(单元格B2)并将其存储在Col D中。请参阅快照2

enter image description here

快照1

enter image description here

快照2

这是完整的代码。但有一点谨慎。如果没有“ .EnableEvents = False ”或主页中没有错误处理,请不要尝试此代码。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim LastRow As Long

    On Error GoTo Whoa

    '~~> Check if any value was entered in cell A2
    If Not Intersect(Target, Range("A2")) Is Nothing Then
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
        End With

        '~~> Get the next available line in Col D for output
        LastRow = Range("D" & Rows.Count).End(xlUp).Row + 1

        '~~> Save the value
        Range("D" & LastRow).Value = Range("B2").Value
    End If

LetsContinue:
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With

    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume LetsContinue
End Sub

HTH

西特

答案 1 :(得分:0)

您可以在另一个单元格中复制单元格y和粘贴值的值。 右键单击 - >选择性粘贴 - >选择“值”