使用通用代码

时间:2017-09-29 14:00:37

标签: vba vlookup

我需要在VBA中设置一个vlookup循环。 我已经让它为第一行工作,但我需要查找单元格是通用的。现在B3正在查找A3,但是当它循环时B4也在查找A3时我需要它来查找A4。

有没有人知道查找上一个选定单元格而不是设定范围的方法?

到目前为止,这是我的代码:

 Range("A3").Select

    Do Until ActiveCell.Value = " "
        ActiveCell.Offset(0, 1).Select
        ActiveCell = Application.WorksheetFunction.VLookup(Sheets("test").Range("A3"), Sheets("HD Extract").Range("Extract"), 4, False)
        ActiveCell.Offset(0, 1).Select
        ActiveCell = Application.WorksheetFunction.VLookup(Sheets("test").Range("B3"), Sheets("HD Extract").Range("Wordings"), 2, False)
        ActiveCell.Offset(0, 1).Select
        ActiveCell = Application.WorksheetFunction.VLookup(Sheets("test").Range("C3"), Sheets("HD Extract").Range("PriorityRank"), 3, False)
        ActiveCell.Offset(0, 1).Select
        ActiveCell = Application.WorksheetFunction.VLookup(Sheets("test").Range("C3"), Sheets("HD Extract").Range("Wordings"), 5, False)
        ActiveCell.Offset(1, -4).Select
    Loop

1 个答案:

答案 0 :(得分:0)

尝试下面的代码 - 这是一个非常通用的代码。它将需要修改(您的vlookup列必须与您的vlookup范围一起调整),但一般原则成立。

lastrow = Cells(Activesheet.Rows.Count,1).End(xlUp).Row
For r = 3 to lastrow
    For c = 2 to 5
        Cells(r,c).Value = Application.WorksheetFunction.Vlookup(Sheets("test").Range(Cells(r,c-1), Sheets("HD Extract").Range("Extract"), 4,False)
        If Cells(r,c).Value = " " Then GoTo nextstep
    Next r
Next c
Nextstep: