2013-04-03 111 views
4

我目前會使用這樣的東西,無論是與範圍,細胞或許多不同的方式相同的基本原則。使用VBA獲取VBA中使用的唯一值?

Range("A1", Range("A1").End(xlDown)).AdvancedFilter Action:=xlFilterCopy, _ 
    CopyToRange:=Range("IV1"), Unique:=True 

Dim myArr as Variant 
myArr = Range("IV1", Range("IV1").End(xlDown)) 
Columns("IV").Delete 

有沒有辦法直接將這些唯一值加載到VBA中的任何類型的對象,而無需複製到另一個位置?

+0

類似:http://stackoverflow.com/questions/3017852/vba-get-unique-values-from-array IMO的最佳方式是使用字典。 – bernie 2013-04-03 22:16:04

+0

與此無關。這是關於使用VBA構建的數組,我正在從列和數組中獲取唯一列表。 – user2140261 2013-04-03 22:17:31

+0

@bernie:對不起剛剛看到您的評論。已刪除我的回答:) – 2013-04-03 22:19:05

回答

6

您可以使用Collection Object創建唯一條目。例如

Sub Sample() 
    Dim Col As New Collection 
    Dim itm 
    Dim i As Long 
    Dim CellVal As Variant 

    '~~> Lets say looping through Row 1 to 22 For 
    '~~> Range("A1:A22") as mentioned in your recent comment 
    For i = 1 To 22 
     CellVal = Sheets("Sheet1").Range("A" & i).Value 
     On Error Resume Next 
     Col.Add CellVal, Chr(34) & CellVal & Chr(34) 
     On Error GoTo 0 
    Next i 

    For Each itm In Col 
     Debug.Print itm 
    Next 
End Sub 

截圖

enter image description here

+0

因此,如果相同的值被添加兩次,一個集合會拋出一個錯誤? – user2140261 2013-04-03 22:24:06

+0

不,它不會因爲我們正在使用OERN – 2013-04-03 22:24:32

+0

OERN ='在錯誤恢復下一個「 – 2013-04-03 22:25:01