我有一個(gè)Excel里面有三列數(shù)據(jù)。我想通過VB實(shí)現(xiàn)排序功能
SubSort1()
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.AddKey:=Range("A2:A"&Range("A1").CurrentRegion.Rows.Count)_
,SortOn:=xlSortOnValues,Order:=xlAscending,DataOption:=xlSortNormal
ActiveSheet.Sort.SortFields.AddKey:=Range("B2:B"&Range("A1").CurrentRegion.Rows.Count)_
,SortOn:=xlSortOnValues,Order:=xlAscending,DataOption:=xlSortNormal
WithActiveSheet.Sort
.SetRangeRange("A1:C"&Range("A1").CurrentRegion.Rows.Count)
.Header=xlYes
.MatchCase=False
.Orientation=xlTopToBottom
.SortMethod=xlPinYin
.Apply
EndWith
EndSub
VB數(shù)組排序問題
如果在excel表格的A列中依次輸入0-11共12個(gè)數(shù)字,在B列中對(duì)應(yīng)地輸入12個(gè)隨機(jī)數(shù),然后按B列排一下序,A列中的數(shù)字就變成隨機(jī)排列的了
在這里使用同樣的思路,只不過把二維表格換成二維數(shù)組即可,代碼如下:
DimMatrix(0To11,0To1)AsSingle
DimiAsInteger,jAsInteger
DimsngTempAsSingle
Randomize
'初始化數(shù)組,使每“行”第一個(gè)數(shù)字為行號(hào),第二個(gè)數(shù)字為隨機(jī)大小的數(shù)字
Fori=0To11
Matrix(i,0)=i
Matrix(i,1)=Rnd(100)
Next
Text1.Text=""
'由于數(shù)組較小,這里使用冒泡排序,依次篩選出第N大的數(shù)字并顯示到Text1中
Fori=0To11
Forj=i+1To11
IfMatrix(j,1)>Matrix(i,1)Then
sngTemp=Matrix(i,1)
Matrix(i,1)=Matrix(j,1)
Matrix(j,1)=sngTemp
sngTemp=Matrix(i,0)
Matrix(i,0)=Matrix(j,0)
Matrix(j,0)=sngTemp
EndIf
Next
Text1.Text=Text1.Text&vbCrLf&Matrix(i,0)
Next
EXCELVBA宏語言排序問題附有圖片
問題1
PrivateSubCommandButton1_Click()
Dimi,jAsLong
Sheets("sheet2").Cells.ClearContents
Sheets("sheet1").Cells.Copy
Sheets("sheet2").Select
Sheets("sheet2").Range("A1").Select
ActiveSheet.Paste
i=3
DoWhileSheets("sheet2").Range("A"&i).Value""
Forj=2Toi-1
IfSheets("sheet2").Range("A"&i).Value>Sheets("sheet2").Range("A"&j).ValueThen
Else
Sheets("sheet2").Rows(i&":"&i).Cut
Sheets("sheet2").Rows(j&":"&j).InsertShift:=xlDown
ExitFor
EndIf
Nextj
i=i+1
Loop
EndSub
問題2
PrivateSubCommandButton1_Click()
Dimi,jAsLong
Sheets("sheet2").Cells.ClearContents
Sheets("sheet1").Cells.Copy
Sheets("sheet2").Select
Sheets("sheet2").Range("A1").Select
ActiveSheet.Paste
i=3
DoWhileSheets("sheet2").Range("A"&i).Value""
Forj=2Toi-1
IfSheets("sheet2").Range("C"&i).Value&Sheets("sheet2").Range("D"&i).Value>Sheets("sheet2").Range("C"&j).Value&Sheets("sheet2").Range("D"&j).ValueThen
Else
Sheets("sheet2").Rows(i&":"&i).Cut
Sheets("sheet2").Rows(j&":"&j).InsertShift:=xlDown
ExitFor
EndIf
Nextj
i=i+1
Loop
EndSub
以上就是我的Excel包含三列數(shù)據(jù)的詳細(xì)內(nèi)容,!