首页 文章

VBA引用不同工作表中的表

提问于
浏览
0

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

  • Filename = Application.GetOpenFilename(FileFilter:= "Excel Files (*.xls), *.xls",Title:= "Please select a file")

  • Table1 = Sheet1.Range("A3:A7000")'SiteID

  • 表2 = [文件名] Sheet1.Range("A3:I13")

  • Roww = Sheet1.Range("E2").Row

  • Coll = Sheet1.Range("E2").Column

  • 对于每个cl在表1中

  • Sheet1.Cells(Roww,Coll)= Application.WorksheetFunction.VLookup(cl,Table2,1,False)

  • Roww = Roww 1

  • 下一个cl

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

2 回答

  • 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
    
  • 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
    

相关问题