2012-02-21 46 views
0

我想知道是否有办法链接一个单元格,以便它永久保存计算结果,以便即使计算输入发生更改,以前的结果也是仍然保存。例如,当我们说我的计算是第一种情况下的x + 2 = y和x = 1时,可以进一步举例说明。我希望能够链接一个单元格,以保存结果y = 3以及输入x = 1,即使我改变了x的值。Excel 2003:提取计算结果

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

回答

0

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

+0

嗨,我知道如何使用粘贴特殊。我想知道如何编程它,以便某些单元格以这种方式行为并永久保存y的值,并且在更改x时不会更改。也许,阻止它重新评估的一种方法? – user1222280 2012-02-21 00:55:32

+0

所以你想要一个存储每个x的y值的单元格列表? – 2012-02-21 00:59:03

+0

是的,是否有可能这样做? – user1222280 2012-02-21 01:02:59

1

一个可能的解决方案做使用IF条件和选择性粘贴命令在一起,但我不知道如何编程它这样它是自动的。有没有办法使用公式来做到这一点?或者我必须冒险进入VBA?

这里是无需特殊粘贴命令的方式之一。将代码粘贴到相关的工作表代码区域。请参考快照1。这只是一个例子。请根据您的要求更改它。代码的作用是检查用户是否输入了X的任何值(单元格A2),如果用户确实捕获了它,则捕获Y(单元格B2)的值并将其存储在列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

希德