2012-03-13 1 views
-2

私のExcelシートで入力を追跡したい。EXCELで入力像追跡を行う方法

たとえば、IDのようなものを入力してEnterキーを押すと、別のシートのIDを検索して名前を見つけ、入力した元のセルのIDを置き換えます。

これを行うにはどうすればよいですか?

シンプルな例がいいと思いますが、ありがとうございます。

アップデート:当然の

はい、私はIDはそうではないシート全体を入力する唯一のいくつかの特定の細胞を追跡する必要があります。

+1

あなたはほとんどすべての彫像を追跡する必要があることがわかります... –

答えて

2

タスク用のイベントハンドラ(ワークシート用に定義されたもの)を使用します。この関数は、ワークシートのセル値が変更されるたびに(ユーザーまたは他のコードによって)呼び出されます。

Targetパラメータには、変更されたセルの範囲が含まれます。その範囲の列と行を繰り返し処理し、実行する検索/置換操作を実行します。イベントハンドラがそれ自身を起動しないブール変数を追加してください。

Public NoCellUpdateHandle As Boolean 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If NoCellUpdateHandle Then Exit Sub 

    Dim row As Integer, col as Integer, idValue as String, replaceValue as String 

    For Each columnObj In Target.Columns 
     For Each rowObj In columnObj.Rows 
      row = rowObj.Row 
      col = columnObj.Column 

      ' You can filter for certain rows/columns 
      If row > 5 And row < 10 And col = 7 Then 
       idValue = ActiveSheet.Cells(row, col).Value 
       ' do the lookup for the id value in the other worksheet here 
       ' replaceValue = lookup(idValue) 

       ' Disable the event handler and perform the replacement 
       NoCellUpdateHandle = True 
       ActiveSheet.Cells(row, col).Value = replaceValue 
       NoCellUpdateHandle = False 
      End If 
     Next rowObj 
    Next columnObj 
End Sub 

これですべてが必要です。

+0

1)効率を賢明にするためには、イベントを無効にしてください。特定の範囲に制限され、後で結果をフィルタリングする場合でも、シート全体に開いたままにしないでください。 – brettdj

+0

+1これは良い答えですが、これはList Validationを使用するとより簡単に達成できますか? (つまり 'NAME' /' ID'sのリストでドロップダウンを許可する)? – Gaffi

関連する問題