vba vlookup循环增量+1

时间:2015-02-01 14:18:13

标签: excel vba vlookup

对于经验丰富的职业选手来说,这应该是一个简单的问题。

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"但不确定在此实例中连续向下移动的正确语法

2 个答案:

答案 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必须按升序排序方式。