返回列表 上一主題 發帖

VBA 用字典的方式提去不重複及小到大的排序

VBA 用字典的方式提去不重複及小到大的排序

各位大大:

請問如何用 VBA 中 用字典的方式 從小到大的排序

2017-11-24_111846.jpg
2017-11-24 11:21


我只寫到不重複,排序就卡住了。
Sub text()
    Dim d As Object, arr, brr
    Set d = CreateObject("scripting.dictionary")
   
    arr = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
   
    ReDim brr(1 To UBound(arr), 1 To 1)
   
    For i = 1 To UBound(arr)
        s = arr(i, 1)
        If Not d.exists(s) Then
            d(s) = ""
            k = k + 1
            brr(k, 1) = arr(i, 1)
        End If
    Next
    Range("B:B").ClearContents
    Range("B1").Value = "結果"
    With Range("B2").Resize(k, 1)
        .NumberFormat = "@"
        .Value = brr
    End With
   
    Set d = Nothing
      
end sub

VBA字典排序方式.zip (5.93 KB)
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

回復 1# kim223824

個人練習,數值從小到大排序,想到使用Small函數排序,詳下圖紅框:
   
Sort_test.gif
2017-11-24 14:30
*YC的筆記鋪 - Excel、Word教學
http://lyc017.pixnet.net/blog
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

TOP

或者用錄制巨集的功能 也行
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

TOP

回復 1# kim223824
底下誠如3樓 adrian_9832 所說的是用錄製的方式取得:
Sub test()
    Columns("A").Copy [B1]
    er = [A65536].End(3).Row
    With Range("B1:B" & er)
        .RemoveDuplicates Columns:=1, Header:=xlNo
        .Sort key1:=[B1], Order1:=1
    End With
End Sub
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

TOP

感謝各位大大:
提供的方法,結果一樣,我本來想用字典的語法,來完成這樣程式。
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

TOP

        靜思自在 : 改變自己是自救,影響別人是救人。
返回列表 上一主題