|
以最后1列AF列的乱序自然数为排序基准,
以倒数第2列AE列的值作为排序关键值排序。其余列不参与排序,只需跟随变化。
- Sub test() 'by kagawa 2016/7/22
- Dim ar, br(), cr&(), i&, j&, m&, n&, r&, tms#
- tms = Timer
- ar = [a1].CurrentRegion '读取数据到数组ar
- m = UBound(ar): n = UBound(ar, 2) '最大行m、最大列n
- ReDim br(1 To m, 1 To n - 1), cr&(1 To m)
- '定义存放排序结果的数组br、以及排序参照值的数组cr
- For i = 1 To m '遍历各行整理排序参数
- r = ar(i, n): cr(r) = i '整理最后1列排序值对应的行序号,即排序结果存入数组cr
- Next
- '如 第1行排序基准值r=2361 最后排序结果应为对应第 i行=1
- For i = 1 To m '遍历各行进行排序
- r = cr(ar(i, n - 1)) '按cr记录索引返回实际排序对应值
- For j = 1 To n - 1 '把A列到AD列以及AE列一起移动到位即可
- br(r, j) = ar(i, j)
- Next
- Next
- '原理:如果某行值ar(i, n - 1)=2361、那么r = cr(ar(i, n - 1)) 将返回=1 表明本行排序结果=第1行
- MsgBox Format(Timer - tms, "0.000s") '排序整理完成
- [a1].Resize(m, n - 1) = br '输出结果到工作表
- End Sub
复制代码
|
评分
-
1
查看全部评分
-
|