|

楼主 |
发表于 2017-2-11 16:58
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
Sub 美式排序()
Dim arr, x%, y%, z!, d As Object, k
Set d = CreateObject("Scripting.Dictionary")
Range("i1").CurrentRegion.ClearContents
arr = Range("a1").CurrentRegion
For x = 2 To UBound(arr)
If Not d.exists(arr(x, 2)) Then
Set d(arr(x, 2)) = CreateObject("Scripting.Dictionary")
End If
d(arr(x, 2))(arr(x, 3)) = d(arr(x, 2))(arr(x, 3)) + 1
Next
a = d.keys: b = d.items
For Each k In d.keys
y = 0
z = 1000
Do While z >= 0
If z <> 1000 Then
d(k)(z * (-1)) = y + 1
y = y + 1
d(k).Remove z
End If
z = Application.Max(d(k).keys)
Loop
Next
For x = 2 To UBound(arr)
arr(x, 4) = d(arr(x, 2))(arr(x, 3) * (-1))
Next
Range("i1").Resize(UBound(arr), 4) = arr
End Sub
|
|