'°Ñ¦Ò ikboy ¾Ç²ßSystem.collections.arraylist
Sub ±Æ¦WAmoKatקï()
tm = Timer
Dim d As Object, a, k, t, xL As Object, n&
a = Range("h6:h" & [h1048576].End(3).Row)
Set d = CreateObject("scripting.dictionary") '¦r¨å¨ú°ß¤@È
For Each k In a: If k <> "" Then d(k) = 0: Next
Set xL = CreateObject("System.collections.arraylist") '±Æ§Ç§@·~
For Each k In d.keys: xL.Add k: Next
xL.Sort 'Sorted Ascending
xL.Reverse 'Reverse sort
For i = 1 To xL.Count: d(xL(i - 1)) = i: Next '±Æ§Ç§Ç¸¹(±Æ¦W)¼g¤J¦r¨å
For i = 1 To UBound(a)
If a(i, 1) = "" Then a(i, 1) = 0 Else a(i, 1) = d(a(i, 1)) '±Æ¦W¼g¤Ja°}¦C
Next
[i6].Resize(UBound(a)) = a 'a°}¦C¼g¤J I Äæ¦ì
Debug.Print Timer - tm, "End" '31.40" §ïµ½¬° 0.332"
End Sub
Sub ±Æ¦WAmoKat()
tm = Timer
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([h6], [h1].Cells(Rows.Count, 1).End(xlUp))
For i = 1 To UBound(Arr): xD(Arr(i, 1)) = 0: Next i '¦r¨å²£¥Í°ß¤@È
With [i6].Resize(xD.Count) '§Q¥Î Range.Sort ±Æ§Ç
.Value = Application.Transpose(xD.keys)
.Sort Key1:=.Item(1), Order1:=xlDescending, Header:=xlNo
End With
For i = 1 To xD.Count: xD(Cells(5 + i, "I").Value) = i: Next i '±Æ§Ç§Ç¸¹¼g¤J¦r¨å
For i = 1 To UBound(Arr) '¬d¸ß¦r¨å±Æ¦C§Ç¸¹
If Arr(i, 1) = "" Then Arr(i, 1) = 0 Else Arr(i, 1) = xD(Arr(i, 1))
Next i
[i6].Resize(UBound(Arr)) = Arr '¶K¤W¸ê®Æ
Set xD = Nothing: Erase Arr
Debug.Print Timer - tm '0.30"
End Sub