\'1 不按顺序的
Sub arrFilterCC()
\'数组内容去重复函数,生成新数组arr2
Dim arr, arr2, i, idx, k
arr = \"a-,a-,a-,a-,d-,b-,c-,c-,e-,f-,b-,b-,a-\"
arr2 = Split(arr, \",\"):arr = Split(arr, \",\")
For i = 0 To UBound(arr2)
If UBound(Filter(arr2, arr(i))) > 0 Then
arr2 = Filter(arr2, arr(i), False)
k = UBound(arr2) + 1
ReDim Preserve arr2(k)
arr2(k) = arr(i)
End If
Next
Debug.Print Join(arr2)
End Sub
2按顺序的
Sub arrFilterCC2()
\'数组内容去重复函数,生成新数组
Dim arr, arr2(), i, idx, k
arr = \"a-,a-,a-,a-,d-,b-,c-,c-,e-,f-,b-,b-,a-\"
arr = Split(arr, \",\")
ReDim arr2(1)
For i = 0 To UBound(arr)
idx = UBound(Filter(arr2, arr(i)))
If idx < 0 Then
ReDim Preserve arr2(UBound(arr2) + 1)
arr2(UBound(arr2)) = arr(i)
End If
Next
Debug.Print Join(arr2)
End Sub
\'如果重复特别多冗余,用下面这个可以极大提高效率
Sub arrFilterCC3()
\'数组内容去重复函数,生成新数组
Dim arr, arr2, i, idx, k
arr = \"a-,a-,a-,a-\"
arr2 = Split(arr, \",\")
arr = Split(arr, \",\")
Do
idx = UBound(Filter(arr2, arr(i)))
If idx > 0 Then
arr2 = Filter(arr2, arr(i), False)
k = UBound(arr2) + 1
ReDim Preserve arr2(k)
arr2(k) = arr(i)
End If
i = i + 1
Debug.Print i
If i > UBound(arr2) Then Exit Do
Loop
Debug.Print Join(arr2)
End Sub