如何在使用VLOOKUP时使用对其他工作簿的引用

我想问你的代码我的帮助。 我正在尝试从另一个工作簿获取值,并通过VLOOKUP将其放入当前工作簿中。 我想使用对工作簿的引用,而不是确切的名称,因为search工作簿的名称将会更改。 代码如下:

Sub Thu_submission_ships() FileToOpen = Application.GetOpenFilename("Microsoft Excel Files (*.xlsx), *.xlsx", 2, "Open last week's EMEA GA Backlog YYYY-MM-DD submission") Workbooks.Open Filename:=FileToOpen Set wb_blog = ActiveWorkbook Set sht_blog = wb_blog.Sheets("Backlog") Columns("X:X").NumberFormat = "@" ActiveSheet.Range("X2:Z" & LastRow_blog).Name = "blog" wb_blog.Save FileToOpen = Application.GetOpenFilename("Microsoft Excel Files (*.xlsx), *.xlsx", 1, "Open today's GA ships") Workbooks.Open Filename:=FileToOpen Sheets("Ships").Select LastRow2 = Cells(Rows.Count, 1).End(xlUp).Row Columns("X:X").Insert Shift:=xlToRight Range("X2:X" & LastRow2).Formula = "=F2&L2" Range("X2:X" & LastRow2).Copy: Range("X2:X" & LastRow2).PasteSpecial xlPasteValues Range("X2").Select Columns("X:X").NumberFormat = "@" Range("Y2:Y" & LastRow2).Formula = "=VLOOKUP(X2, sht_blog!blog, 2, False)" End Sub 

非常感谢您的帮助!

你可以在stringvariables中build立你的公式:

 sFormula = "=VLOOKUP(X2,'[" & sht_blog.parent.name &"]" & sht_blog.name &"'!blog, 2,0)" 

然后简单地:

 Range("Y2").Formula = sFormula 

在你的文章中的代码有点混乱,但请参阅下面的代码的概念以及解释。

 Option Explicit Sub VlookupExample() Dim FileToOpen As Variant 'grabs workbook FileToOpen = Application.GetOpenFilename("Microsoft Excel Files (*.xlsx), *.xlsx", 1, "Open today's GA ships") Workbooks.Open FileName:=FileToOpen 'FileToOpen now stores the workbook full path name 'strip out only workbook name Dim FileName As String FileName = Mid(FileToOpen, InStrRev(FileToOpen, "\") + 1, 255) 'Now use in vlookup (same way you would if entered manually in cell. Range("Y2").Formula = "=vlookup(X2," & FileName & "!blog,2,False)" End Sub