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