VBA vlookup在外部工作簿中使用Excel参考表

VBA vlookup在外部工作簿中使用Excel参考表,vba,excel,Vba,Excel,现在,我使用这种类型的代码来查看O列中的内容,以确定在N列中输入的内容。因为数据是机密的,所以我只在这里使用字母和数字。它工作正常,但我希望它引用外部工作簿中的表,而不是在VBA代码中硬编码案例,因为我将插入数千个案例和值 Sub ChangeTest() Dim LastRow As Long Dim i As Long LastRow = Range("O" & Rows.Count).End(xlUp).Row For i = 2 To La

现在,我使用这种类型的代码来查看O列中的内容,以确定在N列中输入的内容。因为数据是机密的,所以我只在这里使用字母和数字。它工作正常,但我希望它引用外部工作簿中的表,而不是在VBA代码中硬编码案例,因为我将插入数千个案例和值

Sub ChangeTest()
    Dim LastRow As Long
    Dim i As Long
      LastRow = Range("O" & Rows.Count).End(xlUp).Row
      For i = 2 To LastRow
        Select Case Range("O" & i)
          Case "A", "B", "C"
            Range("N" & i) = "1"
          Case "D","E","F"
            Range("N" & i) = "2"
          Case "G","H","I"
            Range("N" & i) = "3"
        End Select
      Next i
End Sub
在外部工作簿中,D列将包含案例(A、B、C等),C列的数字(1、2、3等)将进入原始工作簿中的N列


我不确定我现在拥有的代码是否需要稍微编辑以合并参考表,或者是否需要完全不同。

为什么不像标题所建议的那样运行vlookup而不是运行循环

Sub ChangeTest()
Dim LastRow As Long
Dim Referance_Workbook As Workbook
Dim Referance_Tab As Worksheet
Dim Rng As Range


Set Referance_Workbook = Workbooks.Open("[Referance workbook path]")
Set Referance_Tab = Referance_Workbook.Sheets("[Referance tab within referance workbook]")
Referance_Workbook.Close SaveChanges:=False

LastRow = Range("O" & Rows.Count).End(xlUp).Row
Set Rng = Range("N2:N" & LastRow)
Rng.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-11],'[Source Workbook.xlsx]Sheet1'!C1:C2,2,0),""No in refrence table"")"


End Sub

这会在引用工作簿/选项卡的a列上进行查找,并在B列中查找结果。

也许这会有所帮助:外部工作簿是否已打开?我想我做了正确的更改,但设置的引用选项卡值出现“下标超出范围”错误。如果选项卡名为RData,那么这不应该是该行括号中的内容吗?像这样
Set reference\u Tab=reference\u Workbook.Sheets(“[RData]”)不,应该是
Set reference\u Tab=reference\u Workbook.Sheets(“RData”)
我没有发现错误,但它仍然不能正常工作。这是我最后一行的样子。我想我有点不对劲。此外,它应该在D列上进行查找,并在C列中查找结果。
Rng.FormulaR1C1=“=IFERROR(VLOOKUP(RC[-11],“[otherworkbook.xlsm]RData'!C:D,1,0),“无参考表”)”
您不能在正在查找的列左侧的列上进行VLOOKUP操作-您需要索引匹配公式。Change
Rng.FormulaR1C1=“=IFERROR(VLOOKUP(RC[-11]”,“[otherworkbook.xlsm]RData”!C:D,1,‌​0),“不在引用表中”“)”
to
Rng.FormulaR1C1=“=IFERROR(索引(“[otherworkbook.xlsm]RData”!C3:C4,匹配(RC[-11],“[otherworkbook.xlsm]RData”!C4,0),1),“不在引用表中”)”
它给了我“不在引用表中”所有行均出错。公式应将原始工作簿中O列中的内容与参考工作簿中D列中的内容进行比较。