在VBA中,可以使用以下几种方法来实现数组去重:
使用字典(Dictionary)对象:将数组中的元素作为字典的键,然后遍历数组,将元素作为键添加到字典中,最后将字典中的键转换为数组即可。Dim arr() As VariantDim dict As ObjectSet dict = CreateObject("Scripting.Dictionary")' 假设arr是要去重的数组For Each element In arr dict(element) = 1Next element' 通过转换字典的键为数组arr = dict.keys使用Collection对象:将数组中的元素添加到Collection对象中,然后使用Collection对象的RemoveDuplicates方法去重,最后将Collection对象转换为数组。Dim arr() As VariantDim col As New CollectionDim element As Variant' 假设arr是要去重的数组For Each element In arr On Error Resume Next col.Add element, CStr(element) On Error GoTo 0Next element' 使用RemoveDuplicates方法去重RemoveDuplicates col' 将Collection对象转换为数组ReDim arr(1 To col.Count)For i = 1 To col.Count arr(i) = col(i)Next iSub RemoveDuplicates(col As Collection) Dim i As Long For i = col.Count To 2 Step -1 If col(i) = col(i - 1) Then col.Remove (i) End If Next iEnd Sub使用逐个比较的方式:遍历数组中的元素,逐个与之前的元素进行比较,如果相同则不添加到新的数组中。Dim arr() As VariantDim newArr() As VariantDim i As Long, j As LongDim isDuplicate As Boolean' 假设arr是要去重的数组ReDim newArr(1 To UBound(arr))j = 1For i = 1 To UBound(arr) isDuplicate = False For k = 1 To j - 1 If arr(i) = newArr(k) Then isDuplicate = True Exit For End If Next k If Not isDuplicate Then newArr(j) = arr(i) j = j + 1 End IfNext i' 将newArr截断为实际去重后的数组ReDim Preserve newArr(1 To j - 1)arr = newArr这些方法可以根据实际情况选择使用。

