VBA引用不同的工作表中的表

我正在尝试在VBA中使用vlookup。

  1. Filename = Application.GetOpenFilename(FileFilter:=“Excel文件(* .xls),* .xls”,标题:=“请select一个文件”)
  2. Table1 = Sheet1.Range(“A3:A7000”)'SiteID
  3. Table2 = [Filename] Sheet1.Range(“A3:I13”)
  4. Roww = Sheet1.Range(“E2”)。Row
  5. Coll = Sheet1.Range(“E2”)。Column
  6. 对于每个cl在Table1中
  7. Sheet1.Cells(Roww,Coll)= Application.WorksheetFunction.VLookup(cl,Table2,1,False)
  8. Roww = Roww +1
  9. 下一个cl

我的问题是如何定义位于第3行不同工作表/文件中的表?

您可以将工作簿,工作表和范围设置为VBA中的对象,并按名称引用它们。

例:

 Sub test() Dim filename As String Dim fullRangeString As String Dim returnValue As Variant Dim wb As Workbook Dim ws As Worksheet Dim rng As Range 'get workbook path filename = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls), *.xls", Title:="Please select a file") 'set our workbook and open it Set wb = Application.Workbooks.Open(filename) 'set our worksheet Set ws = wb.Worksheets("Sheet1") 'set the range for vlookup Set rng = ws.Range("A3:I13") 'Do what you need to here with the range (will get error (unable to get vlookup property of worksheet) if value doesn't exist returnValue = Application.WorksheetFunction.VLookup("test4", rng, 2, False) MsgBox returnValue 'If you need a fully declared range string for use in a vlookup formula, then 'you'll need something like this (this won't work if there is any spaces or special 'charactors in the sheet name 'fullRangeString = "[" & rng.Parent.Parent.Name & "]" _ & rng.Parent.Name & "!" & rng.Address 'Sheet1.Cells(10, 10).Formula = "=VLOOKUP(A1," & fullRangeString & ",8,False)" 'close workbook if you need to wb.Close False End Sub 

这应该工作:

 Sub vLook() Dim wb1 As Workbook Dim wb2 As Workbook Dim Range1, myValue Set wb1 = ThisWorkbook Set wb2 = Workbooks.Open("C:\Code\Book4.xlsx") Range1 = wb2.Sheets(1).Range("A1:C5") myValue = Application.WorksheetFunction.VLookup("Test", Range1, 2, False) End Sub