将EVALUATE与VOOK中的VLOOKUP相结合

时间:2016-11-22 15:48:39

标签: vba excel-vba vlookup evaluate excel

我试图在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>

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

根本不需要Evaluate。您可以改为使用Worksheetfunction版本:

rngJ2.Value = WorksheetFunction.VLookup(rngJ2.Offset(, -1), Sheets("Sheet1").Range("A:H"), 8, False)