我试图在VBA中执行一系列VLOOKUP并且认为必须有一种方法可以使用EVALUATE函数批量执行它,而不是单独遍历工作表上的值(我已经知道了)怎么做)。但是,我正在努力使查找价值变得更有活力"。 这是我到目前为止所得到的:
Dim ws1 as worksheets, ws2 as worksheet, rngJ2 as Range, Lastrow2 as long
Set ws1 = ActiveWorkbook.Sheets("Sheet1")
Set ws2 = ActiveWorkbook.Sheets("Sheet2")
LastRow2 = ws2.Cells.Find(What:="*", _
After:=Range("A1"), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
set rngJ2 = ws2.range("J2:J" & Lastrow2)
现在这就是我接下来要做的事情,因为知道rngJ2.address(row)部分语法不正确:
rngJ2.Value= Evaluate("VLOOKUP(Sheet2!I" & rngJ2.address(row) & ",Sheet1!A:H,8,FALSE)")
我尝试使用rngJ2.address(row)部分为该范围内的每个单元定义适当的行,以便Cell J5使用I5作为查找值,J12使用I12等。< / p>
有什么想法吗?
答案 0 :(得分:1)
根本不需要Evaluate
。您可以改为使用Worksheetfunction
版本:
rngJ2.Value = WorksheetFunction.VLookup(rngJ2.Offset(, -1), Sheets("Sheet1").Range("A:H"), 8, False)