Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:基于Vlookup结果将值移到另一张图纸上_Excel_Vba - Fatal编程技术网

Excel VBA:基于Vlookup结果将值移到另一张图纸上

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

所以我有一个代码,在Vlookup上进行循环,它的目的是基于Vlookup,它将特定的单元移动到另一个特定的单元,但在另一个表中。代码会运行,但由于某种原因它不会移动数据。我在If注释中尝试了另一种方法,并使用一个复制目的地执行了一个范围,但我开始得到未识别的对象错误。希望有人能看到我在为什么价值观没有被改变上遗漏了什么

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")