나는 시트에 열에서 문자열 목록을 다음과 같이, (우리가 "A"라고하자) : 다음가장 빠른 방법
A
BJS-LAX-GRU
CAN-ORD-MIA-BOG
NRT-LAX-JFK-LIM
과
A
LAX
MEX
MIA
JFK
그래서 내가 두 번째 목록의 값이 첫 번째 목록의 각 문자열에서 처음 나타나는 알고 싶어하고, : 나는 다른 시트의 다른 목록을 다음과 같이, (우리가 "B"라고하자) 그 문자열 옆에 그 값을 써야합니다. 예, 나는 얻을 것 :
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
문제는 그 목록을 갖고 있기 때문에 나는,이 코드는 매우 비효율적 인 것을 알고 있다는 것입니다 :
A B
BJS-LAX-GRU LAX
CAN-ORD-MIA-BOG MIA
NRT-LAX-JFK-LIM LAX
내가 완벽하게 작동합니다 다음 코드를 썼다 200K + 행. 이 작업을 수행하는보다 효율적인 방법이 있습니까? 배열에 값을 넣고 꽤 빨리해야이 일치 찾기 위해 Application.Match를 사용하여
'완벽하게 작동하는 다음 코드를 작성했습니다. '코드 검토에서 질문하십시오. 거기의 놀랄만한 공동체. – findwindow