Yep. More looping involved here.
I know this is probably not the best way to do this, but hey, it worked!
Code:Option Explicit Public Sub ArrayDifference(ByRef Arr1() As String, _ ByRef Arr2() As String, _ ByRef NewArr() As String) ' Compares the first two arrays passed and places values ' not found in either array into NewArr() ' from the difference of the two arrays. ' NewArr() Parameter should be empty when calling this procedure. Dim i As Long, j As Long, k As Long, m As Long Dim blnExists As Boolean, blnInNewArr As Boolean ReDim NewArr(0) ' Loop through Arr1 and check in Arr2 For i = LBound(Arr1()) To UBound(Arr1()) For j = LBound(Arr2()) To UBound(Arr2()) If Arr1(i) = Arr2(j) Then blnExists = True Exit For End If Next j ' If not Arr1(i) not found in Arr2 then start ' to add to NewArr If blnExists = False Then ' Check if already exists in NewArr() For k = LBound(NewArr()) To UBound(NewArr()) ' If already exists in NewArr then exit for If NewArr(k) = Arr1(i) Then blnInNewArr = True Exit For End If Next k ' If Arr1(i) does not exist in NewArr then add it If blnInNewArr = False Then ReDim Preserve NewArr(m) NewArr(m) = Arr1(i) m = m + 1 End If End If ' Reset booleans blnExists = False blnInNewArr = False Next i ' For i = LBound(Arr1()) To UBound(Arr1()) ' Now Loop through Arr2 and check in Arr1 (just the reverse of before) For i = LBound(Arr2()) To UBound(Arr2()) For j = LBound(Arr1()) To UBound(Arr1()) If Arr2(i) = Arr1(j) Then blnExists = True Exit For End If Next j ' If not Arr2(i) not found in Arr1 then start ' to add to NewArr If blnExists = False Then ' Check if already exists in NewArr() For k = LBound(NewArr()) To UBound(NewArr()) ' If already exists in NewArr then exit for If NewArr(k) = Arr2(i) Then blnInNewArr = True Exit For End If Next k ' If Arr2(i) does not exist in NewArr then add it If blnInNewArr = False Then ReDim Preserve NewArr(m) NewArr(m) = Arr2(i) m = m + 1 End If End If ' Reset booleans blnExists = False blnInNewArr = False Next i ' For i = LBound(Arr2()) To UBound(Arr2()) End Sub Public Sub TestMeOutAgain() Dim Arr1(0 To 4) As String Dim Arr2(0 To 3) As String Dim NewArr() As String Dim i As Long Arr1(0) = "Badger" Arr1(1) = "Wombat" Arr1(2) = "Monkey" Arr1(3) = "Dog" Arr1(4) = "Cow" Arr2(0) = "Cow" Arr2(1) = "Dog" Arr2(2) = "Cat" Arr2(3) = "Wow! writing these arrays takes too long lol" Call ArrayDifference(Arr1(), Arr2(), NewArr()) ' Show results For i = LBound(NewArr()) To UBound(NewArr()) Debug.Print NewArr(i) Next i End Sub






Reply With Quote