从两个字符串数组中返回唯一字符串,连接成一个字符串VBA
问题描述:
我有一个接近工作但不完全的代码。我有两个数组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
答
喜欢这个?
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
谢谢你的帮忙!即使一个数组长于另一个数组,它也可以工作吗? – user2217895 2013-04-24 20:38:39
查看上面的答案。一个阵列比另一个大:) – 2013-04-24 20:39:56
谢谢!非常感谢您的帮助! – user2217895 2013-04-24 21:19:49