VBA引用不同工作表中的表

时间:2013-11-19 12:06:56

标签: excel excel-vba external definition vba

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

  1. Filename = Application.GetOpenFilename(FileFilter:=“Excel Files(* .xls),*。xls”,Title:=“请选择一个文件”)
  2. Table1 = Sheet1.Range(“A3:A7000”)'SiteID
  3. 表2 = [文件名] Sheet1.Range(“A3:I13”)
  4. Roww = Sheet1.Range(“E2”)。行
  5. Coll = Sheet1.Range(“E2”)。列
  6. For Table in Table1
  7. Sheet1.Cells(Roww,Coll)= Application.WorksheetFunction.VLookup(cl,Table2,1,False)
  8. Roww = Roww +1
  9. 下一个cl
  10. 我的问题是如何定义位于第3行的不同工作表/文件中的表?

2 个答案:

答案 0 :(得分:2)

这应该有效:

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

答案 1 :(得分:1)

您可以在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