|
楼主 |
发表于 2020-8-26 12:50
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
你的format运用的真好。一般来说,混和排序的基本就是对比为主,或者作为字典的key,多数可能还是数字的排序,但如果出现了小数或负数的多列排序,直接format就有点问题。我在你的基础上做了点修改,增加了小数和负数,希望能帮到有需要的朋友。(没考虑超过15位的极端情况)
Sub test2()
Dim list As Object: Set list = CreateObject("system.collections.arraylist")
Dim arr, res, s, i, j, k, R, sr
R = Range("A1048576").End(3).Row
sr = Mid(10 ^ Len(R), 2)
arr = Range("A2:G" & R): ReDim res(R - 1, 1 To UBound(arr, 2))
For i = 1 To R - 1
s = Val(arr(i, 7) & Format(i, sr))
list.Add (s)
Next i
list.Sort
' list.Reverse
For i = 0 To list.Count - 1
k = Right(list(i), Len(R))
For j = 1 To UBound(arr, 2)
res(i, j) = arr(k, j)
Next
Next
[j2].Resize(UBound(arr), UBound(arr, 2)) = res
End Sub
|
|