对于经验丰富的职业选手来说,这应该是一个简单的问题。
1)我试图在循环的每次迭代中将活动单元向下偏移。
2)我只能向下移动,因为我不确定可用的语法。
3)我在想the_result = the_result + 1但是没有用:(
Sub vlookupTest()
search = Worksheets("Sheet1").Range("B2")
For i = 2 To 5
the_result = Application.WorksheetFunction.vlookup(search, Worksheets("Sheet1").Range("F2:G5"), 2, True)
MsgBox the_result
search = ActiveCell.Offset(1, 0)
Next i
End Sub
我可以看到为什么循环只向下移动两个单元并且卡住,因为偏移仅从#34; B2"但不确定在此实例中连续向下移动的正确语法
答案 0 :(得分:1)
ActiveCell永远不会改变你的代码。
替换
search = ActiveCell.Offset(1, 0)
与
ActiveCell.Offset(1, 0).Select
search = ActiveCell
答案 1 :(得分:1)
您的代码未明确强制 ActiveCell 从Worksheets("Sheet1").Range("B2")
开始,但您随后偏离 ActiveCell 。这似乎是将值分配到 search 的方法的混搭。最好不要完全依赖 ActiveCell 。
Sub vlookupTest()
dim searchTerm as variant, the_result as variant
searchTerm = Worksheets("Sheet1").Range("B2").value
For i = 2 To 5
the_result = Application.WorksheetFunction.vlookup(searchTerm , Worksheets("Sheet1").Range("F2:G5"), 2, True)
MsgBox the_result
searchTerm = Worksheets("Sheet1").Range("B2").Offset(i - 1, 0).value
Next i
End Sub
正如仅供参考,在VLOOKUP
中使用 True 作为 range_lookup 参数会返回近似匹配,F2:F5必须按升序排序方式。