Clo*_*ISQ 3 excel vba excel-vba
在Excel 2007中,我循环遍历Sheet 2中第4列的值.仍然在Sheet 2中,我想将vlookup公式的结果输出到第5列.vlookup公式需要引用Sheet 1,其中引用列是.为此,我有以下公式
Range("E2") = Application.WorksheetFunction.VLookup(Range("D2"), _
Worksheets("Sheet1").Range("A1:C65536"), 1, False)
Run Code Online (Sandbox Code Playgroud)
问题,它返回错误代码1004.我读到这是因为我需要在运行公式之前选择Sheet 1,例如:
ThisWorkbook.Worksheets("Sheet1").Select
Run Code Online (Sandbox Code Playgroud)
但是搜索到的值Range("D2")不属于Sheet 1,并且在将Sheet 1带入视图后仍然返回代码1004.
在这种情况下,引用不同工作表的正确方法是什么?
试试这个:
Dim ws as Worksheet
Set ws = Thisworkbook.Sheets("Sheet2")
With ws
.Range("E2").Formula = "=VLOOKUP(D2,Sheet1!$A:$C,1,0)"
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
这只是你想要的简化版.如果您只输出答案,则
无需使用.ApplicationRange("E2")
如果您想坚持逻辑,请声明变量.
见下面的例子.
Sub Test()
Dim rng As Range
Dim ws1, ws2 As Worksheet
Dim MyStringVar1 As String
Set ws1 = ThisWorkbook.Sheets("Sheet1")
Set ws2 = ThisWorkbook.Sheets("Sheet2")
Set rng = ws2.Range("D2")
With ws2
On Error Resume Next 'add this because if value is not found, vlookup fails, you get 1004
MyStringVar1 = Application.WorksheetFunction.VLookup(rng, ws1.Range("A1:C65536").Value, 1, False)
On Error GoTo 0
If MyStringVar1 = "" Then MsgBox "Item not found" Else MsgBox MyStringVar1
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
希望这是你的开始.