N. *_*von 0 string excel vba position excel-vba
我在工作表的列中有一个字符串列表(让我们说"A"),如下所示:
A
BJS-LAX-GRU
CAN-ORD-MIA-BOG
NRT-LAX-JFK-LIM
Run Code Online (Sandbox Code Playgroud)
然后我在另一张表上有一个不同的列表(让我们说"B"),如下所示:
A
LAX
MEX
MIA
JFK
Run Code Online (Sandbox Code Playgroud)
所以我想知道第一个列表的每个字符串中第一个列表的哪个值首先出现,然后我需要在字符串旁边写入该值.在这个例子中,我会得到:
A B
BJS-LAX-GRU LAX
CAN-ORD-MIA-BOG MIA
NRT-LAX-JFK-LIM LAX
Run Code Online (Sandbox Code Playgroud)
我编写了以下代码,它完美地运行:
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
Run Code Online (Sandbox Code Playgroud)
问题是我知道这个代码效率非常低,因为这些代码有200K +行.有没有更有效的方法来做到这一点?
如果单个值都是3个字母,那么类似于:
=MID(C3,SMALL(IFERROR(SEARCH($F$3:$F$6,C3),200),1),3)
Run Code Online (Sandbox Code Playgroud)
使用输入为数组公式 Ctrl+Shift+Enter
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |