VBA中的VLOOKUP宏

时间:2016-10-04 07:37:08

标签: excel vba excel-vba vlookup

我需要有关vlookup的宏脚本的帮助。我想在vlookup脚本中硬编码表数组的信息。现在的问题是,当我为vlookup函数添加行时,它只适用于最后一行,尽管所有行实际上都是来自数组表的信息。

我需要这方面的帮助,以确保如果宏运行它将开始运行第一个宏行,如果第一行没有匹配则转到第二行。第三行也是如此。提前致谢。

Sub Macro7()

    Range("L1").Select

    Range("L1").FormulaR1C1 = "=VLOOKUP(RC[-1],{1603101,""BFF""},2,FALSE)"
    Range("L1").FormulaR1C1 = "=VLOOKUP(RC[-1],{1603102,""DELTA""},2,FALSE)"
    Range("L1").FormulaR1C1 = "=VLOOKUP(RC[-1],{1608063,""BIST""},2,FALSE)"

    Lastrow = ActiveSheet.UsedRange.Rows.Count

    Range("L1").Autofill Destination:=Range("L1:L" & Lastrow)

End Sub

1 个答案:

答案 0 :(得分:1)

试试这个:

Sub Macro7()
    With ActiveSheet
        .Range("L1:L" & .UsedRange.Rows.Count).FormulaR1C1 = "=VLOOKUP(RC[-1],{1603101,""BFF"";1603102,""DELTA"";1608063,""BIST""},2,FALSE)"
    End With
End Sub

如果您愿意让VBA代码进行计算而不是创建公式,则可以使用类似下面的代码。 (通过公式执行此操作的优点是每次数据更改时都会更新,而无需再次调用宏。)

Sub Macro7()
    Dim r As Long
    Dim v as String
    With ActiveSheet
        For r = 1 to Range("K" & .Rows.Count).End(xlUp).Row
            Select Case .Cells(r, "K").Value
                Case 1603101: v = "BFF"
                Case 1603102: v = "DELTA"
                Case 1608063: v = "BIST"
                Case Else:    v = "UNKNOWN!!"
            End Select
            .Cells(r, "L").Value = v
        Next
    End With
End Sub
相关问题