我需要有关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
答案 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