Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1929|回复: 2

[已解决]求b随c绑定每隔4行一组快速排序的vba程序

[复制链接]
发表于 2016-6-25 17:14 | 显示全部楼层 |阅读模式


在区域b5:c30000中,数据以行为单位每4行一组,各组数据以c单元格中的数字参与排序,同行号b随c绑定排序,每隔4行一组依次排序,数字按从大到小降序排序.排序后b列数据放到以e5开始的e列。c列数据放到以f5开始的f列。

附件中的排序速度太慢,请用数组排序法,谢谢!


排序.zip (16.31 KB, 下载次数: 6)
发表于 2016-6-25 20:48 | 显示全部楼层    本楼为最佳答案   
本帖最后由 老司机带带我 于 2016-6-25 20:52 编辑

  1. Sub xx()
  2.     Dim i&, tempA, tempB, j&, k&, arr, n%
  3.     Range("h5:i8576").ClearContents
  4.     arr = Range("b5:c" & Range("c1048576").End(3).Row)
  5.     y = Int(UBound(arr, 1) / 4) * 4
  6.     For k = 4 To y Step 4
  7.         For i = k To k - 2 Step -1
  8.             For j = k - 3 To i - 1
  9.                 If arr(j, 2) < arr(j + 1, 2) Then
  10.                     tempA = arr(j, 2)
  11.                     tempB = arr(j, 1)
  12.                     arr(j, 2) = arr(j + 1, 2)
  13.                     arr(j, 1) = arr(j + 1, 1)
  14.                     arr(j + 1, 2) = tempA
  15.                     arr(j + 1, 1) = tempB
  16.                 End If
  17.             Next
  18.         Next
  19.     Next
  20.     n = UBound(arr, 1) Mod 4
  21.     If n >0 Then
  22.         For i = UBound(arr, 1) To k - 4 + n - 2 Step -1
  23.             For j = k - 4 + 1 To i - 1
  24.                 If arr(j, 2) < arr(j + 1, 2) Then
  25.                     tempA = arr(j, 2)
  26.                     tempB = arr(j, 1)
  27.                     arr(j, 2) = arr(j + 1, 2)
  28.                     arr(j, 1) = arr(j + 1, 1)
  29.                     arr(j + 1, 2) = tempA
  30.                     arr(j + 1, 1) = tempB
  31.                 End If
  32.             Next
  33.         Next
  34.     End If
  35.     Sheet1.Range("E5").Resize(UBound(arr, 1), 2) = arr
  36. End Sub
复制代码

排序.rar

98.08 KB, 下载次数: 7

评分

参与人数 1 +1 收起 理由
rangevba + 1 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-6-25 23:26 | 显示全部楼层
老司机带带我 发表于 2016-6-25 20:48

老师你好,程序经测试满足要求,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 14:06 , Processed in 0.299899 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表