在 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)
我正在尝试在 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)