我需要根据两个数组的差异创建第三个数组,我根本无法理解这个逻辑
正确的第三个数组v3
将是(来自下面的代码)v3 = (Carol, Ted, Thor, Freya)
Thanks
Sub MatchArrays()
Dim v1, v2, v3
Dim i As Long, j As Long
v1 = Array("Bob", "Carol", "Ted", "Alice", "Thor", "Freya")
v2 = Array("Bob", "Carol")
ReDim v3(LBound(v1) To Abs(UBound(v1) - UBound(v2)))
For i = LBound(v1) To UBound(v1)
For j = LBound(v2) To UBound(v2)
If InStr(1, v1(i), v2(j)) Then
v3(i) = v1(i)
Exit For
End If
Next j
MsgBox v3(i)
Next i
End Sub
这个使用了集合,并且添加重复的键会引发错误。 v1 或 v2 是否是子集并不重要:
Sub test()
Dim v1 As Variant, v2 As Variant, v3 As Variant
Dim coll As Collection
Dim i As Long
'Assumes 0-based Variants
v1 = Array("Bob", "Carol", "Ted", "Alice", "Thor", "Freya")
v2 = Array("Bob", "Carol")
ReDim v3(LBound(v1) To Abs(UBound(v2) - UBound(v1)) - 1)
Set coll = New Collection
For i = LBound(v1) To UBound(v1)
coll.Add v1(i), v1(i)
Next i
For i = LBound(v2) To UBound(v2)
On Error Resume Next
coll.Add v2(i), v2(i)
If Err.Number <> 0 Then
coll.Remove v2(i)
End If
On Error GoTo 0
Next i
For i = LBound(v3) To UBound(v3)
v3(i) = coll(i + 1) 'Collections are 1-based
Debug.Print v3(i)
Next i
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)