2011-08-01 92 views
0

如何使用VBA代碼執行排序操作?任何已定義的宏來執行該操作?使用VBA進行排序操作?

我必須按升序對我的列B進行排序,其中包含值。和C列中有日期和時間最早到最新的時尚。

+2

請大家饒恕我們所有的乞討和自嘲。我們都曾經是初學者。堅持這個問題,你已經嘗試過。 –

+1

@niko:在發佈之前,我建議閱讀您的問題幾次。旨在將句數減半,並儘可能使信息儘可能簡潔緊湊。這比起呼籲人們的慷慨,特別是考慮到大多數開發人員的個性來說要好得多。 –

回答

5

我強烈建議你使用宏錄像機玩耍。如果您在Excel中看不到開發人員選項卡,請轉至Excel選項,並將其置於「熱門」選項卡中。點擊打開它。

按錄製宏,然後做你想做的事情(如突出顯示一列,按功能區上的排序和按升序排序),然後停止錄製。進入VBA(Alt + F11)並查看生成的代碼以瞭解如何編寫相同函數的語法。

例如,對日期排序時會導致這樣的事情:

Sub Macro1() 
    Columns("F:F").Select 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("F1:F5"), _ 
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("Sheet1").Sort 
     .SetRange Range("F1:F5") 
     .Header = xlGuess 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
End Sub 

既然你已經選擇要當您運行宏來排序的列,可以清理代碼,使其像這樣:

關鍵是要記住,你並不需要選擇日:

Sub SortAscending() 
    With ActiveWorkbook.Worksheets("Sheet1").Sort 
     .Header = xlGuess 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
End Sub 

日期排序可以使用相同的代碼,因爲它的升序進行您已選擇的代碼中的範圍。祝你好運,並與錄音機玩得開心,這確實有助於這樣的情況。

此外,還有很多關於Excel VBA的書籍,我建議您在書店或數字版上選擇一本書。大多數書籍都會引導您瞭解VBA基礎知識,主要關鍵字,使用記錄器,然後最終完成得足夠遠,以便您可以編寫自己的代碼(記錄器代碼幾乎沒有優化或完美,但對學習措辭非常有用(語法)來完成一些工作表函數)。

+0

不客氣,niko。如果我的答案有效,請檢查答案旁邊的箭頭標記以接受答案。 :)至於第二個問題,恐怕我沒有在驅動器中指定足夠的文件來解決這個問題。我想我會在其他地方看到你的q,所以希望這裏的其他用戶最終會看到它並幫助你。 – aevanko

+0

很乾淨的答案。 –