2012-02-21 4 views
0

計算の結果を保持するようにセルをリンクする方法があるかどうかを知りたいので、計算への入力が変更されても以前の結果はまだ保存されています。Excel 2003:計算結果の抽出

たとえば、最初のケースでは、私の計算はx + 2 = yであり、x = 1と言うことができます。私はxの値を変更しても、結果y = 3と入力x = 1を保存するためにセルをリンクすることができます。

IF条件とPASTE SPECIALコマンドを一緒に使用する方法はありますが、自動化するようにプログラムする方法がわかりません。数式を使ってこれを行う方法はありますか?または私はVBAに挑戦する必要がありますか?

答えて

0

セルyの値​​と貼り付け値のみを別のセルにコピーできます。 >「値」

+0

こんにちは、私は特別なペーストを使用する方法を知っています。どのようにして特定のセルがそのように動作し、永続的にyの値を保持し、xが変更されたときに変更しないようにプログラムできるかを知りたい。おそらく、それを再評価するのを止める方法でしょうか? – user1222280

+0

したがって、各xのyの値を格納するセルのリストが必要ですか? –

+0

はい、そうできますか? – user1222280

1

一緒IF条件と貼り付け]コマンドを使用して行うための可能な解決策を選択しますが、私はそのようにそれをプログラムする方法を確認していない - >貼り付け - 右クリックそれは自動化されています。数式を使ってこれを行う方法はありますか?または私はVBAに挑戦する必要がありますか?ここで

貼り付け]コマンドを必要とせずに一つの方法です。コードをに関連するのワークシートコード領域に貼り付けます。 スナップショット1を参照してください。これは単なる例です。あなたの要件に応じてそれを変更してください。コードが行うことは、ユーザーがXの値(セルA2)を入力したかどうかをチェックし、ユーザーがキャプチャした場合はY(セルB2)の値をキャプチャしてDに格納します。スナップショット2

enter image description here

スナップ1

enter image description here

スナップ2

そして、これは完全なコードです。しかし注意の1つの部分。 ".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

シド