我被建议将此作为第二个问题发布,但这有点继续我的第一个问题here。
我有代码(脚本字典),用于匹配列并将第三个值粘贴到正确行的另一列中。现在,我遇到的问题(新问题)是代码似乎从我的检查器工作表的第一行开始粘贴到我的主工作表中的第一个完整行。假设每个工作表都有许多记录,并且不断添加新记录(这就是我尝试不使用限制性定义范围的原因)。
像这样:
Lavoie把他所有的WO#都放在他自己的小纸上。他打算手动更新“Date Inspector Cleared”,然后点击一个按钮,然后将该日期复制粘贴到主表单中的R列,之后通过WO#(它始终是唯一且永不重复)与WO匹配#在主表(2018)中。下面的图片(我不得不将一些敏感信息涂黑 - 只是假设它并不重要。)
这是我的代码:
Sub dates()
Application.ScreenUpdating = False
Dim AVals As Object: Set AVals = CreateObject("scripting.dictionary")
Dim i As Long, j As Long, lastRow1 As Long, lastRow2 As Long
Dim sh_insp, sh_2018 As Worksheet
Dim MyName As String
Set sh_insp = ActiveSheet
Set sh_2018 = Sheets("2018")
With sh_insp
lastRow1 = .Range("A:A").Rows.Count 'last row in spreadsheet
lastRow1 = .Cells(lastRow1, 7).End(xlUp).Row 'last used row in column G
'load the AVal dict
For j = 18 To lastRow1
MyName = .Cells(j, 7).Value
If Len(MyName) > 0 And Len(.Cells(j, 18)) > 0 Then AVals.Add MyName, .Cells(j, 18).Value
Next j
End With
With sh_2018
lastRow2 = .Range("A:A").Rows.Count
lastRow2 = .Cells(lastRow2, 7).End(xlUp).Row 'last used row in column G
For i = 18 To lastRow2
MyName = .Cells(i, 7).Value
If AVals.Exists(MyName) Then
.Cells(i, 18).Value = AVals.Item(MyName)
End If
Next i
End With
Application.ScreenUpdating = True
End Sub
我已经清除了WO#s - 为什么代码不会复制粘贴这些值,为什么要跳过?