Excel VBA:基于Vlookup结果将值移到另一张图纸上
所以我有一个代码,在Vlookup上进行循环,它的目的是基于Vlookup,它将特定的单元移动到另一个特定的单元,但在另一个表中。代码会运行,但由于某种原因它不会移动数据。我在If注释中尝试了另一种方法,并使用一个复制目的地执行了一个范围,但我开始得到未识别的对象错误。希望有人能看到我在为什么价值观没有被改变上遗漏了什么Excel VBA:基于Vlookup结果将值移到另一张图纸上,excel,vba,Excel,Vba,所以我有一个代码,在Vlookup上进行循环,它的目的是基于Vlookup,它将特定的单元移动到另一个特定的单元,但在另一个表中。代码会运行,但由于某种原因它不会移动数据。我在If注释中尝试了另一种方法,并使用一个复制目的地执行了一个范围,但我开始得到未识别的对象错误。希望有人能看到我在为什么价值观没有被改变上遗漏了什么 Dim i, j, lastG, lastD As Long Dim sht, ws As Worksheet With Application .ScreenUpd
Dim i, j, lastG, lastD As Long
Dim sht, ws As Worksheet
With Application
.ScreenUpdating = False
.EnableEvents = False
.CutCopyMode = False
End With
' find last row
lastG = Sheets("Log").Cells(Rows.Count, "B").End(xlUp).Row
lastD = Sheets("Slide Layout").Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Row
Set sht = Sheets("Log")
Set ws = Sheets("Slide Layout")
' loop over values in "Log"
For i = 2 To lastG
currVal = ws.Cells(Rows.Count, "J").End(xlUp)
lookupval = Sheets("Log").Cells(i, "B") ' value to find
If lookupval = currVal Then
sht.Cells(i, "F") = ws.Cells(lastD)
End If
Next i
On Error Resume Next
With Application
.ScreenUpdating = True
.EnableEvents = True
.CutCopyMode = True
End With
End Sub
不确定我是否完全遵循……但看起来你应该有这个
单元格(i,“F”)=currVal更新,找到了!我刚换了新的
sht.Cells(i, "F") = ws.Cells(lastD)
与
非常感谢您的帮助。
currVal=ws.Cells(Rows.Count,“J”).End(xlUp)
-这永远不会改变。另外,在声明变量时,每次都需要指定类型:Dim i As Long,j As Long,lastG As Long,lastD As Long
,否则该变量是一个变量。对于sht
ws.Cells(lastD)
将返回第1行(除非lastD>16384)和任何列索引lastD
。这可能不是您想要的。@BigBen所有这些都已指定,currval不打算更改。它们已声明,但不是您期望的变量类型。我不确定currVal是否应该改变,这就是我指出它的原因。@warcupine所以,我发现它正好到了我想要的地方。我发现的问题是“LaSTD”是一个空白单元格,代码是用空白单元格移动它来替换这个值。所以基本上,它是因为某种原因而向后做的。
sht.Cells(i, "F").Copy Destination:=ws.Cells(lastD, "B")