2017-03-09 33 views
0

我有下面的代碼,列出從數組唯一值:從第18行開始的vba列表數組?

Sub LIST() 
    Dim arr As New Collection, a 
    Dim aFirstArray() As Variant 
    Dim i As Long 

    aFirstArray() = Array("Banana", "Apple", "Orange", "Tomato", "Apple", _ 
    "Lemon", "Lime", "Lime", "Apple") 

    On Error Resume Next 
    For Each a In aFirstArray 
    arr.Add a, a 
    Next 


    For i = 18 To arr.Count 
    Cells(i, 3) = arr(i) 
    Next 

End Sub 

我想列出從行18這些值開始,但是當我設置I = 18,這並不一個沒有上市的工作。請有人告訴我我要去哪裏錯了嗎?

+1

我相信你想'對於i = 18〜18 + arr.Count '。目前,'arr.count'將會是9(或7),並且你不能爲'i = 18到[任何小於18的數字]' – BruceWayne

+1

集合中只有7個itmes,你正在嘗試引用編號18 –

+5

對於i = 1至arr.Count:單元格(i + 17,3)= arr(i):Next' – Comintern

回答

2

你可以切換到Dictionary對象,並利用其鍵的屬性:

Sub LIST() 
    Dim aFirstArray() As Variant, a As Variant 

    aFirstArray() = Array("Banana", "Apple", "Orange", "Tomato", "Apple", "Lemon", "Lime", "Lime", "Apple") 

    With CreateObject("Scripting.Dictionary") 
     For Each a In aFirstArray 
      .Item(a) = a 
     Next 
     Cells(18, 3).Resize(.Count) = Application.Transpose(.Keys) 
    End With 

End Sub 
+0

@ user7415328,你通過了嗎? – user3598756

0

或之後刪除重複的:

arr = Array("Banana", "Apple", "Orange", "Tomato", "Apple", "Lemon", "Lime", "Lime") 
Set r = [C18].Resize(UBound(arr) + 1) 
r = Application.Transpose(arr) 
r.RemoveDuplicates 1