[英]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.