【发布时间】:2016-11-23 01:46:59
【问题描述】:
我正在尝试在 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) 部分执行的操作是为范围内的每个单元格定义适当的行,以便单元格 J5 使用 I5 作为查找值,J12 使用 I12 等。
有什么想法吗?
【问题讨论】:
-
Range rngJ2 会有多行,Vlookup 的第一个条件是单个单元格。
-
您是否将 VLookUp 结果放入一列?如果是这样,您可以在第一个公式中输入公式并使用 Range.FillDown 在多行中快速使用公式。
标签: vba excel vlookup evaluate