【发布时间】:2016-02-09 13:51:06
【问题描述】:
我需要从两个数组的差异中创建第三个数组,我根本无法理解这个逻辑
正确的第三个数组 v3 将是(来自下面的代码)v3 = (Carol, Ted, Thor, Freya)
谢谢
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
【问题讨论】:
-
一个数组总是成为另一个数组的子集吗?
-
那为什么会是所示示例的结果?
-
@Tim,是的,一个永远是另一个的子集。 @shg,
v3是我想要得到的结果 -
我认为问题是如果 Carol 同时在 v1 和 v2 中,为什么 Carol 在 v3 中?似乎 v3 应该是“Ted”、“Alice”、“Thor”、“Freya”,因为它们只在 v1 中。
-
@DougGlancy,你的权利应该是
v3 = (Ted, Alice, Thor, Freya)