Vba Application.VLookup函数始终返回#N/A

Vba Application.VLookup函数始终返回#N/A,vba,excel,Vba,Excel,我正在尝试使用Visual Basic中的Application.VLookup函数在其他工作簿中查找值。但是,每当我使用它时,它总是返回N/A 这是我的功能布局。LastRow()只返回最后一行的行号。SBT是一个包含源工作簿名称的变量。最后一行是短缺的最后一行。我在B列中搜索的ID,因此我使用“B”&ind来引用它 For ind = 4 To LastRow() Range("H" & ind).Select ActiveCell.Value = Applicati

我正在尝试使用Visual Basic中的Application.VLookup函数在其他工作簿中查找值。但是,每当我使用它时,它总是返回N/A

这是我的功能布局。LastRow()只返回最后一行的行号。SBT是一个包含源工作簿名称的变量。最后一行是短缺的最后一行。我在B列中搜索的ID,因此我使用“B”&ind来引用它

For ind = 4 To LastRow()
    Range("H" & ind).Select
    ActiveCell.Value = Application.VLookup("B" & ind, Workbooks(SHORTAGE_SBT).Sheets(1).Range("A14:DZ" & SBT_Last), Range("DZ1").Column, False)
Next
我试着为VLookup录制一个宏,看看它是否能帮助我理解这个问题。宏给了我这个函数,它可以工作,但无法使用,因为它包含硬编码的文件名,而不是使用变量

Range("H" & ind).FormulaR1C1 = "=VLOOKUP(RC[-6],'[filename.xls]Sheet1'!R14C1:R2382C130, COLUMN(R[-3]C[122]), FALSE)"

除了使用更直接的引用之外,我看不出宏设置函数参数的方式与我的方式有什么显著区别。我曾尝试在代码中使用直接数字,但这样做也无济于事。

将这两种方法结合起来:

Range("H" & ind).FormulaR1C1 = _
            & "=VLOOKUP(RC[-6],'[" & Workbooks(SHORTAGE_SBT)  _
            & "]Sheet1'!R14C1:R2382C130, COLUMN(R[-3]C[122]), FALSE)"
“B”和ind
将搜索“字面上”;它不会转换为范围地址,因为它在这里由VBA而不是Excel进行解释。尝试:


总是一些小事把你搞砸了。非常感谢。我不知道在VBA中可以使用多行语句。谢谢。我是新用户,所以我的投票还不可见/
Application.VLookup("B" & ind, Workbooks(SHORTAGE_SBT).Sheets(1).Range("A14:DZ" & SBT_Last), Range("DZ1").Column, False)
Application.VLookup(Range("B" & ind), Workbooks(SHORTAGE_SBT).Sheets(1).Range("A14:DZ" & SBT_Last),  Range("DZ1").Column, False)
'                   ^^^^^^^^^^^^^^^^