我在Sheet1 column D
中有一个地方列表,在Sheet1 column E
中有一个原始值列表。在某些位置之间有空白行,并且某些位置是重复的。
我在Sheet2 Column F
中有一个简短的位置列表(数据中有1个空白行),在Sheet2 column G
中,我可以为每个位置添加新的校正值。
计划是要有一个脚本,该脚本将在每次我在Sheet2 column G
中添加新值时运行。我希望可以通过excel vba Events来实现。假设我更新了G5
,脚本将在Sheet2 F5
中找到Sheet1 D:D
,然后用新的Sheet1 E:E
值替换Sheet2 G5
中的相应值:
这是我尝试的一些代码,但是我仍然不确定1)如何使它起作用,以及2)每当我在Sheet2 G:G
中更新值时如何使其起作用?任何帮助将非常感激。
Sub CorrectingValues()
Dim i As Long
Dim lstrw As Long
Dim newval As Range
Sheets("Sheet1").activate
lstrw = Cells(Rows.Count, "D").End(xlUp).Row
For i = lstrw to 1 Step -1
If Sheet("2").Cells(i, "G").value <>"" Then
newval = .Find(Sheets("Sheet2").cells(i, "F") _
After:=Sheets("Sheet1").Range("D1") , LookIn:=xlValues)
Cells(newval, "E").Value = Sheets("2").cells(i,"G")
End If
Next i
End Sub
最佳答案
将以下代码放在Sheet2中
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("G:G")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
enteredvalue = Target.Value
enteredvaluefind = Cells(Target.Row, Target.Column - 1)
targetfindrow = Worksheets("Sheet1").Range("D:D").Find(enteredvaluefind).Row
targetfindcolumn = Worksheets("Sheet1").Range("D:D").Find(enteredvaluefind).Column
Worksheets("Sheet1").Cells(targetfindrow, targetfindcolumn + 1) = enteredvalue
End If
End Sub