【问题标题】:VBA VLOOKUP from different excel file with different names来自不同名称的不同excel文件的VBA VLOOKUP
【发布时间】:2015-02-10 06:32:16
【问题描述】:

您好,我在另一个 Excel 文件中的其他 Excel 电子表格中进行了 vlookup。现在我的问题是名称一直在变化。

Range("B2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],[TEST2.xlsx]Sheet1!C1:C8,8,FALSE)"
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B" & Range("A" & rows.Count).End(xlUp).Row)
Range("B2:B" & Range("A" & rows.Count).End(xlUp).Row).Select

所以基本上它会在 TEST2.xlsx 中查找所需的数据,然后将其放入我原始 excel 文件中的列表中。但是 TEST2 会一直变化,每次我要使用这个宏时

我该怎么做?

【问题讨论】:

    标签: vba excel vlookup


    【解决方案1】:

    不完全确定您需要什么,但如果我是对的,您可以这样做。
    值得注意的是,不必先选择单元格,直接引用即可。

    Sub lookupSub(dataFile)
    Range("B2").FormulaR1C1 = "=VLOOKUP(RC[-1],[" & dataFile & "]Sheet1!C1:C8,8,FALSE)"
    Range("B2").AutoFill Destination:=Range("B2:B" & Range("A" & Rows.Count).End(xlUp).Row)
    Range("B2:B" & Range("A" & Rows.Count).End(xlUp).Row).Select
    End Sub
    


    然后您可以按如下方式调用它:

    Call lookupSub("TEST2.xlsx")
    


    或者,如果它在循环中工作,您可以执行以下操作:

    For i = 1 To 10
        Call lookupSub("TEST" & i & ".xlsx")
    Next i
    

    【讨论】:

    • 工作得很好!谢谢!你现在能告诉我如何让它记住我用宏打开它时的文件名,所以基本上是 CALL lookupSub(File-I-just-Opened)
    • 如果工作簿处于活动状态,那么您可以使用:调用 lookupSub(ActiveWorkbook.Name)
    • 不,有很多工作簿打开可能是问题所在。但是,我在Dim MyFile As String MyFile = Application.GetOpenFilename() Workbooks.Open (MyFile) 之前用这个在宏中打开它所以我可以调用lookupSub(MyFile) ???
    • 当您打开工作簿时,它会自动成为 ActiveWorkbook,因此请尝试使用 lookupSub(ActiveWorkbook.Name)。它应该可以工作。
    • 但是带有 vlookup 的列表应该在它查找数据的文件中创建,所以它必须首先再次切换到另一个工作簿,这是如何工作的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多