我正在尝试将匹配的单元格值中具有偏移量和过去值的值复制到右边的下一个空单元格中。我收到错误“类型不匹配”
Dim ThisCell1 As Range
Dim ThisCell2 As Range
Dim LCol As Long
Application.ScreenUpdating = False
For Each ThisCell1 In Sheets("sheet1").Range("A1:A1089")
For Each ThisCell2 In Sheets("sheet0").Range("b2:b3392")
If ThisCell2.Value = ThisCell1.Value Then
ThisCell2.Offset(0, 1).Copy
ThisCell1.End(xlToLeft).Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues
Exit For
End If
Next ThisCell2
Next ThisCell1
Application.ScreenUpdating = True
此子功能可以满足您的要求,并且比使用双循环要快得多。它使用公式Match
作为参数,它将找到在哪一行找到匹配项。然后它将转到该行,找到最后使用的列,并复制原始字符串的偏移量:
Dim ThisCell1 As Range
Dim ThisCell2 As Range
Dim LCol As Long
Application.ScreenUpdating = False
For Each ThisCell2 In Sheets("sheet0").Range("b2:b3392")
If Not IsError(Application.Match(ThisCell2.Value, Sheets("Sheet1").Range("A1:A1089"))) Then
Sheets("Sheet1"). Cells(Application.Match(ThisCell2.Value, Sheets("Sheet1").Range("A1:A1089")), Columns.Count).End(xlToLeft).Offset(, 1).Value = ThisCell2.Offset(, 1)
Exit For 'This insures you only ever get one match. Is that what is needed?
End If
Next ThisCell2
Application.ScreenUpdating = True
我不确定这是否是您要寻找的确切逻辑,如果没有让我知道,请问。这是我可以将您的值与范围进行比较而得出的最接近原始代码的近似值。