2013-04-24 1 views
1

나는 작동하지만 거의 작동하지 않는 코드가 있습니다. 두 배열 astrArray1 및 astrArray2 있고 findUniques() 함수는 두 배열 중 고유 한 문자열 (이름) 반환하도록되어 있습니다. 공통점이있는 이름을 반환하도록 코드를 가져올 수 있지만 고유 한 값을 반환하지는 않습니다. 어떤 도움을 주시면 감사하겠습니다! 이처럼한 문자열로 연결된 두 개의 문자열 배열에서 고유 한 문자열 반환 VBA

Function findUniques(astrArray1() As String, astrArray2() As String) As String 


Dim blnMP5 As Boolean 
blnMP5 = True 

Dim counter1 As Long 
Dim counter2 As Long 

Dim uniquesString As String 
uniquesString = " " 

For counter1 = LBound(astrArray1) To UBound(astrArray1) 
    For counter2 = LBound(astrArray2) To UBound(astrArray2) 
    If astrArray1(counter1) <> astrArray2(counter2) Then 
     blnMP5 = False 
    ElseIf astrArray1(counter1) = astrArray2(counter2) Then 
     blnMP5 = True 
    End If 
    If blnMP5 = False Then 
     uniquesString = uniquesString & "," & astrArray2(counter2) 
    End If 
    Next counter2 
Next counter1 

findUniques = uniquesString 
End Function 

답변

0

: 여기

코드인가?

Option Explicit 

Sub Sample() 
    Dim MyAr1(1 To 4) As String 
    Dim MyAr2(1 To 2) As String 

    MyAr1(1) = "aaa": MyAr1(2) = "bbb": MyAr1(3) = "ccc": MyAr1(4) = "ddd" 
    MyAr2(1) = "aaa": MyAr2(2) = "bbb" 

    '~~> This will give you ccc,ddd 
    Debug.Print findUniques(MyAr1, MyAr2) 
End Sub 

Function findUniques(astrArray1() As String, astrArray2() As String) As String 
    Dim i As Long, j As Long 
    Dim uniquesString As String 
    Dim matchFound As Boolean 

    For i = LBound(astrArray1) To UBound(astrArray1) 
     matchFound = False 
     For j = LBound(astrArray2) To UBound(astrArray2) 
      If astrArray1(i) = astrArray2(j) Then 
       matchFound = True 
       Exit For 
      End If 
     Next j 

     If matchFound = False Then uniquesString = uniquesString & "," & astrArray1(i) 
    Next i 

    findUniques = Mid(uniquesString, 2) 
End Function 
+0

도움 주셔서 감사합니다. 하나의 배열이 다른 배열보다 길더라도이 작업을 수행 할 수 있습니까? – user2217895

+0

위의 대답을 참조하십시오. 하나의 배열이 다른 것보다 큽니다. –

+0

감사합니다! 당신의 도움은 대단히 감사합니다! – user2217895