如何在VBA中使用Vlookup和for循环?

时间:2015-03-09 12:09:01

标签: excel vba for-loop vlookup

出于某种原因,我无法让下面的宏工作。我想替换嵌套在IF函数中的数据链接中的月份。认为VLOOKUP循环中存在错误,因为没有循环它可以正常工作:

ActiveWorkbook.Sheets("IYM Data-Nat").Activate

Dim Previous_Month As String
Dim Current_Month As String

ActiveWorkbook.Sheets("Dashboard").Activate

Dim i As Integer

For i = 1 To 12

Previous_Month = [VLOOKUP(i,X3:Y14,2,FALSE)]

ActiveWorkbook.Sheets("IYM Data-Nat").Activate

Current_Month = Application.Cells(2, 1)

ActiveSheet.Range("DS8:ED19").Select
   Selection.replace What:=Previous_Month, Replacement:=Current_Month,     LookAt:= _
    xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False



 Next i
 End Sub

还尝试过引号:

Previous_Month = "[VLOOKUP(" & i & ",X3:Y14,2,FALSE)]"

没有错误但它不起作用。有人可以帮忙吗?

谢谢。

亲切的问候

1 个答案:

答案 0 :(得分:0)

如果您只运行单个工作簿,则不必继续引用它;你想指出的工作表就足够了。

由于 i 未在这些方括号内解析,因此您遇到了麻烦。我建议退出'方括号评估' 模式,然后通过VBA调用工作表函数。

Previous_Month = application.vlookup(i, Sheets("Dashboard").Range("X3:Y14"), 2, False)

如果您决定使用评估路线,可以使用.Evaluate命令而不是方括号方法构建公式字符串。

Previous_Month = application.evaluate("VLOOKUP(" & i & ", X3:Y14, 2, FALSE)")

更多Application.Evaluate Method (Excel)