EXCEL自动排序VBA代码.pdf
Su单列自动排序()
a为需要排序的数组,up为True则为升序排列,为False,则为降序排列。
DimupAsBoolean
DimranktypeAsString
DimiAsInteger,jAsInteger
DimtempAsDouble,temp1AsInteger
Dima(1000,3)AsDoublea数组定义大小要超过排序数,此处是按排序数在1000个以
内定义
*********************
colnum=1排序数据列
rankcolnum=2排序码列
startrow=5排序数据起始行号
endrow=135排序数据末尾行号
ranktype=降序排序方式,“升序”或“降序”
Ifranktype=升序Then
up=True
Else
up=False
EndIf
Fori=1Toendrow-startrow+1
a(i,0)=Val(ActiveSheet.Cells(startrow+i-1,colnum))
a(i,1)=startrow+i-1
a(i,2)=0
Next
*********************
Fori=1Toendrow-startrow进行n-1轮比较
Forj=endrow-startrow+1Toi+1Step-1从n到i个元素两两进行比较
IfupThen判断升降序
Ifa(j,0)a(j-1,0)Then
temp=a(j,0)
temp1=a(j,1)
a(j,0)=a(j-1,0)
a(j,1)=a(j-1,1)
a(j-1,0)=temp
a(j-1,1)=temp1
EndIf
Else
Ifa(j,0)a(j-1,0)Then
temp=a(j,0)
temp1=a(j,1)
1/4
a(j,0)=a(j-1,0)
a(j,1)=a(j-1,1)
a(j-1,0)=temp
a(j-1,1)=temp1
EndI
EndI
Nextj
Nexti
Fori=1Toendrow-startrow+1
a(i,2)=i
Next
Fori=2Toendrow-startrow+1
Ifa(i,0)=a(i-1,0)Then
a(i,2)=a(i-1,2)
EndI
Next
Fori=1Toendrow-startrow+1
ActiveSheet.Cells(a(i,1),rankcolnum)=a(i,2)
Next
EndSub
数据自动排序(单列间隔)
Sub自动排序1()a为需要排序的数组,up为True则为升序排列,为False,则为降序
排列。
DimupAsBoolean
up=False
DimiAsInteger,jAsInteger
DimtempAsDouble,temp1AsInteger
Forcolnum=1To99为需要排序的数据列数
Dima(100,3)AsDouble
*********************
startrow=3排序数据起始行号