我有一個表中的列字符串列表(我們說的「A」),像這樣:最快的方式
A
BJS-LAX-GRU
CAN-ORD-MIA-BOG
NRT-LAX-JFK-LIM
然後我有一個不同的紙張不同的列表(讓我們說「B」),像這樣:
A
LAX
MEX
MIA
JFK
所以我想知道其中第二列表的價值首先出現在第一列表中的每個字符串,那麼我需要在字符串旁邊寫下該值。在這個例子中,我會得到:
A B
BJS-LAX-GRU LAX
CAN-ORD-MIA-BOG MIA
NRT-LAX-JFK-LIM LAX
我寫了下面的代碼,它完美的作品:
Dim aux As Integer
Dim cur As String
For j = 1 To Sheets("A").Cells(Rows.Count, "A").End(xlUp).Row
aux = 100
cur = ""
For k = 1 To Sheets("B").Cells(Rows.Count, "A").End(xlUp).Row
If InStr(Sheets("A").Cells(j, 1).Value, Sheets("B").Cells(k, 1).Value) < aux And InStr(Sheets("A").Cells(j, 1).Value, Sheets("B").Cells(k, 1).Value) <> 0 Then
cur = Sheets("B").Cells(k, 1).Value
aux = InStr(Sheets("A").Cells(j, 1).Value, cur)
End If
Next k
Sheets("A").Cells(j, 2) = cur
Next j
的問題是,我知道,這個代碼是非常低效的,因爲這些名單有200K +行。有沒有更有效的方法來做到這一點?
'寫下面的代碼,完美的作品:'在代碼審查問。那裏有驚人的社區。 – findwindow