求一段能够双向比较两个数组程序,哪位能帮忙?
数组a:1、2、a、b、c、d、f
数组b:a、b、c、d、e
把数组a和b比较,最后输出的结果是:
正向比较(b里没有,a里有的),不能匹配的数据是:1、2、f
反相比较(b里有,a里没有的),不能匹配的数据是:e
请教高手,麻烦写出详细的程序,多谢~~
[解决办法]
看这个吧,更清楚些。
Option Explicit
Public Sub main()
Dim A(), B(), AtoB(), BtoA()
A = Array("a1", "a2", "a", "b", "c", "d", "f")
B = Array("a", "b", "c", "d", "e")
CompareArrs A(), B(), AtoB()
CompareArrs A(), B(), BtoA(), False
End Sub
Public Function CompareArrs(Arra(), Arrb(), ArrResult(), Optional Direction As Boolean = True) As Boolean
Dim Dic1, Dic2, i, j
Set Dic1 = CreateObject("scripting.dictionary") 'A数组的字典形式
Set Dic2 = CreateObject("scripting.dictionary") 'A数组和B数组的交集的字典形式
For i = LBound(Arra) To UBound(Arra)
Dic1(Arra(i)) = ""
Next i
For i = LBound(Arrb) To UBound(Arrb)
If Dic1.Exists(Arrb(i)) Then
Dic2(Arrb(i)) = ""
End If
Next i
j = 0
Erase ArrResult
If Direction Then '正向比较,即数组A中有且数组B中没有的元素
For i = LBound(Arra) To UBound(Arra)
If Not Dic2.Exists(Arra(i)) Then
ReDim Preserve ArrResult(j)
ArrResult(j) = Arra(i)
j = j + 1
End If
Next i
Else '负向比较,即数组B中有且数组A中没有的元素
For i = LBound(Arrb) To UBound(Arrb)
If Not Dic2.Exists(Arrb(i)) Then
ReDim Preserve ArrResult(j)
ArrResult(j) = Arrb(i)
j = j + 1
End If
Next i
End If
If j = 0 Then
CompareArrs = False '表示ArrResult数组中没有匹配的元素
Else
CompareArrs = True '表示ArrResult数组中有匹配的元素
End If
Set Dic1 = Nothing
Set Dic2 = Nothing
End Function