我有一个表中的列字符串列表(我们说的“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