|

楼主 |
发表于 2023-4-20 19:56
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
我发的最后一个过程代码为什么没有了,再发一次吧。
8千行无序的数据处理用时0.039秒,'有序0.04秒,比上面两个过程快了200多倍
- Sub 我改编的() '8千行无序0.039秒,'有序0.04秒,比上面快了200多倍
- Dim arr, brr(), i, c, r, d, x
- Set d = CreateObject("Scripting.Dictionary")
- Range("D2").CurrentRegion.ClearContents
- T = Timer: s = Columns.Count
- er = [A65500].End(3).Row
- arr = Range("A1:B" & er)
- For i = 1 To UBound(arr)
- x = arr(i, 1)
- d(x) = d(x) + 1 '列计数
- If d(x) > Mc Then Mc = d(x) '找最大的列号
- Next
- ReDim brr(1 To d.Count, 1 To Mc + 2)
- d.RemoveAll
- For i = 1 To UBound(arr)
- x = arr(i, 1)
- If d.exists(x) Then
- c = d(x)(1) + 1 '列计数
- r = d(x)(0) '用字典记录单元格的新位置
- d(x) = Array(r, c) '行列号
- brr(r, c) = arr(i, 2)
- Else
- c = 2
- js = js + 1 '行计数
- d(x) = Array(js, c)
- brr(js, 1) = arr(i, 1)
- brr(js, 2) = arr(i, 2)
- End If
- Next
- Range("D1").Resize(js, Mc + 2) = brr
- MsgBox Timer - T
- Set d = Nothing
- End Sub
复制代码
|
|