Excel精英培训网

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

关于二维数组排序问题

[复制链接]
发表于 2019-12-10 13:13 | 显示全部楼层 |阅读模式
数组arr=Range("A1:C10"),三列分别存放 "ID","姓名","金额",第一行是标题,现在要实现按C列的值大小来进行降序排序,同时A和B也跟着C列在变,即,以C为KEY来降序排序,不要系统库的sort,自己实现,求指教,多谢



发表于 2019-12-10 16:34 | 显示全部楼层
关于排序,常用有两种:1、利用单元格直接排好序,然后再装入数组。
     如果不想破坏原数据,在排序前先把数据复制到一个数组中,排完再还原;
     代码:先录制一个宏,自己稍微改下参数就成了。
     下面我提供一个最简化的代码,录制的宏会有很多用不到的参数选项,代码看起来很长,用不到的参数都可以删掉的;
      Range("a1:c10").Sort key1:=Range("c1"), order1:=xlAscending, Header:=xlYes
           order:排序方式,可以用数字1和2代替;
           header:标题行,xlyes代表有标题行;
           其他参数都是不常用的,不要学。
2、利用双层循环直接对数组排序:
     for i=1 to ubound(arr,1)
          for k=i+1 to bound(arr,1)
               if arr(i,3)>arr(k,3) then   '交换数组位置
                  s1=arr(i,1)
                  s2=arr(i,2)
                  s3=arr(i,3)
                  arr(i,1)=arr(k,1)
                  arr(i,2)=arr(k,2)
                  arr(i,3)=arr(k,3)
                  arr(k,1)=s1
                  arr(k,2)=s2
                  arr(k,3)=s3
               endif
          next k
       next i

       我抹黑写的,没测试,可能有错误。但这已经是个套路写法了,牢记就行。
       数组排序只能对数字实用,对文本无效。我测试过别人写的文本排序代码,与系统排序还是很差距。文本排序还是用单元格排序比较好;






回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 04:56 , Processed in 0.252080 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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