跨工作簿Vlookup

嘿家伙即时通讯尝试通过跨工作簿执行vlookup。 我试图写这种方式..但它似乎不工作使用“x”和“x2”..

Folder = ActiveWorkbook.Path + "\" Dim OptioneeManWb As Workbook Dim TransOutWb As Workbook Dim TransOutWs As Worksheet Dim TermWb As Workbook Dim TermWs As Worksheet Set OptioneeManWb = Workbooks("optionee statement manual.xlsx") Set TransOutWb = Workbooks.Open(Folder & "employee transfer out.xlsx") Set x = TransOutWb.Worksheets("out").Range("A:C") Set TermWb = Workbooks.Open(Folder & "employee terminated listing.xlsx") Set x2 = TermWb.Worksheets("terminated").Range("A:C") OptioneeManWb.Sheets("manual optionee stmt").Range("C6:C" & lastrow2).Formula = "=VLOOKUP(B:B,x,3,0)" OptioneeManWb.Sheets("manual optionee stmt").Range("D6:D" & lastrow2).Formula = "=VLOOKUP(B:B,x2,3,0)" OptioneeManWb.Sheets("manual optionee stmt").Range("C6:C" & lastrow2, "D6:D" & lastrow2).NumberFormat = "m/d/yyyy" OptioneeManWb.Sheets("manual optionee stmt").Range("C:F").Copy OptioneeManWb.Sheets("manual optionee stmt").Range("C:F").PasteSpecial xlPasteValues TransOutWb.Close TermWb.Close 

VLOOKUP等待一个范围的地址作为第二个参数。

 .Formula = "=VLOOKUP(B:B," & x.Address(External:=True) & ",3,0)" 

在你的情况"=VLOOKUP(B:B,x,3,0)" x不被识别为variables,因为它在一个string内。 你也需要在这里填写地址(外部格式,以便不同的工作簿也被识别)。 有关信息,另请参阅Range.Address属性(Excel) 。

同时声明variables以确保types范围是: Dim x As Range, x2 As Range在过程的顶部。


 OptioneeManWb.Sheets("manual optionee stmt").Range("C6:C" & lastrow2).Formula = "=VLOOKUP(B:B," & x.Address(External:=True) & ",3,0)" OptioneeManWb.Sheets("manual optionee stmt").Range("D6:D" & lastrow2).Formula = "=VLOOKUP(B:B," & x2.Address(External:=True) & ",3,0)" 

首先你必须像这样声明variablesx和x2:

昏暗的x作为范围昏暗的x2作为范围