簡體   English   中英

使用第二個 Excel 工作簿作為 VBA 中的表

[英]Using a second Excel workbook as a table in VBA

想知道是否可以使用第二個工作簿作為表格來獲取類似於 vlookup 的匹配數據而不使用公式。

示例:工作簿 1 我想通過使用工作簿 2 查看列 S(港口城市)來填寫 R 列(港口代碼),工作簿 2 在 D 列中有城市列表,港口代碼我想在列中填寫工作簿 1一個。

我知道我可以使用 Vlookup,但如果可以的話,我會盡量避免這樣做。 我在想這樣的事情,但這似乎只看第二個工作表的第一行。 任何幫助或推動正確的方向將不勝感激。

Dim lr As Long, lr1 As Long, i As Long
Dim LineMaster As Workbook
Dim ls As Worksheet
Dim di As Workbook
Dim td As Worksheet

Set td = di.Worksheets(1)
Set ls = LineMaster.Worksheets(1)
lr = ls.Range("I" & ls.Rows.Count).End(xlUp).Row
    
        For i = 2 To lr
            If ls.Range("S" & i).Value Like "" Then
               ls.Range("R" & i).Value = ""
               
            ElseIf ls.Range("N" & i).Value = Left(td.Range("D" & i).Value, 4) Then 
                   ls.Range("N" & i).Value = td.Range("A" & i).Value
               
        Else
        End If
        Next i

不確定我是否完全理解您的要求,但我認為您想進行部分搜索。 在這種情況下, Instr可能會有所幫助。 我不認為使用兩個工作簿是有用的,但讓我們按照你的方式去做。 這就是我想要的 go :

Sub PartialSearch()

Dim lr As Long, lr1 As Long, i As Long, j As Long
Dim lr2 As Long
Dim LineMaster As Workbook
Dim ls As Worksheet
Dim di As Workbook
Dim td As Worksheet

Set LineMaster = ThisWorkbook 'Workbook to fill
Set ls = LineMaster.Worksheets(1) 'Worksheet to fill
Set di = Workbooks.Open(your_workbook) 'Indicate the path of the workbook
Set td = di.Worksheets(1)

lr = ls.Range("S" & ls.Rows.Count).End(xlUp).Row 'Last row of the column S (where cities are already mentioned)
lr2 = td.Range("D" & di.Rows.Count).End(xlUp).Row

        For i = 2 To lr
            For j = 2 To lr2
                If ls.Range("R" & i).Value = "" Then 'If the cell in column R is empty
                    If InStr(1, ls.Range("S" & i).Value, td.Range("D" & j).Value) > 0 Then 'Then the macro looks for a partial search in the other workbook
                        ls.Range("R" & i).Value = td.Range("A" & j).Value 'If the value is found, then the port code is written (change the column A if needed)
                    End If
                End If
            Next j
        Next i
        
        
End Sub

根據工作簿的大小,這種方法可能不是最有效的。 如果太耗時,您可以使用 go 和.Find

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM