在 VBA 中结合 EVALUATE 和 VLOOKUP

Combining EVALUATE with VLOOKUP in VBA

我正在尝试在 VBA 中执行一系列 VLOOKUP,并认为必须有一种方法可以使用 EVALUATE 函数批量执行此操作,而不是循环遍历 [=24] 上的值=] 单独(我已经知道该怎么做)。但我正在努力制作查找值 "dynamic"。 这是我到目前为止所得到的:

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) 部分做的是为范围内的每个单元格定义适当的行,以便单元格 J5 使用 I5 作为查找值,J12 使用 I12,等等.

有什么想法吗?

确实根本不需要Evaluate。您可以改用 Worksheetfunction 版本:

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