Vba Application.VLookup函数始终返回#N/A
我正在尝试使用Visual Basic中的Application.VLookup函数在其他工作簿中查找值。但是,每当我使用它时,它总是返回N/A 这是我的功能布局。LastRow()只返回最后一行的行号。SBT是一个包含源工作簿名称的变量。最后一行是短缺的最后一行。我在B列中搜索的ID,因此我使用“B”&ind来引用它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
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)
' ^^^^^^^^^^^^^^^^