91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

vba數組去重的方法有哪些

vba
小億
299
2023-11-23 20:32:22
欄目: 編程語言

在VBA中,可以使用以下幾種方法來實現數組去重:

  1. 使用字典(Dictionary)對象:將數組中的元素作為字典的鍵,然后遍歷數組,將元素作為鍵添加到字典中,最后將字典中的鍵轉換為數組即可。
Dim arr() As Variant
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

' 假設arr是要去重的數組
For Each element In arr
    dict(element) = 1
Next element

' 通過轉換字典的鍵為數組
arr = dict.keys
  1. 使用Collection對象:將數組中的元素添加到Collection對象中,然后使用Collection對象的RemoveDuplicates方法去重,最后將Collection對象轉換為數組。
Dim arr() As Variant
Dim col As New Collection
Dim element As Variant

' 假設arr是要去重的數組
For Each element In arr
    On Error Resume Next
    col.Add element, CStr(element)
    On Error GoTo 0
Next element

' 使用RemoveDuplicates方法去重
RemoveDuplicates col

' 將Collection對象轉換為數組
ReDim arr(1 To col.Count)
For i = 1 To col.Count
    arr(i) = col(i)
Next i

Sub 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 i
End Sub
  1. 使用逐個比較的方式:遍歷數組中的元素,逐個與之前的元素進行比較,如果相同則不添加到新的數組中。
Dim arr() As Variant
Dim newArr() As Variant
Dim i As Long, j As Long
Dim isDuplicate As Boolean

' 假設arr是要去重的數組
ReDim newArr(1 To UBound(arr))

j = 1
For 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 If
Next i

' 將newArr截斷為實際去重后的數組
ReDim Preserve newArr(1 To j - 1)
arr = newArr

這些方法可以根據實際情況選擇使用。

0
环江| 曲阳县| 兰坪| 莎车县| 东方市| 成安县| 海南省| 云霄县| 客服| 中牟县| 奈曼旗| 原平市| 太白县| 临武县| 巢湖市| 崇州市| 汾阳市| 澄迈县| 苍南县| 特克斯县| 丰顺县| 汶上县| 织金县| 丰原市| 吐鲁番市| 买车| 称多县| 改则县| 英德市| 嘉祥县| 江门市| 沂源县| 大宁县| 镇巴县| 佛冈县| 卢龙县| 鹤庆县| 陈巴尔虎旗| 桃源县| 河间市| 洮南市|