2017-03-17 46 views
3

我試圖循環使用此宏(以下)來瀏覽所有數據列,但需要一些幫助來創建循環或調整當前代碼以適用於所有列。循環宏在單獨編寫所有列時無需編寫長長的重複轉換列表

Sub Trial_5() 

' 
    ActiveCell.Offset(0, -7).Columns("A:A").EntireColumn.Select 
    ActiveWorkbook.Worksheets("Sheet6").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Sheet6").Sort.SortFields.Add Key:=ActiveCell, _ 
     SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("Sheet6").Sort 
     .SetRange ActiveCell.Range("A1:A16395") 
     .Header = xlGuess 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     `enter code here`.SortMethod = xlPinYin 
     .Apply 
    End With 
End Sub 

是否將.columns或activecell.offset調整到總範圍?

調整腳本

Sub eachcolumndesending() 
' 
' eachcolumndesending Macro 
' descending 
' 

' 
    Columns("A:A").Select 
    ActiveWorkbook.Worksheets("Sheet5").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Sheet5").Sort.SortFields.Add Key:=Range("A1"), _ 
     SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("Sheet5").Sort 
     .SetRange Range("A2:A32") 
     .Header = xlNo 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
    Columns("B:B").Select 
    ActiveWorkbook.Worksheets("Sheet5").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Sheet5").Sort.SortFields.Add Key:=Range("B1"), _ 
     SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("Sheet5").Sort 
     .SetRange Range("B1:B33") 
     .Header = xlNo 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
+0

你想獨立於每個其他列對使用範圍中的每列進行排序嗎? – Jeeped

+0

是的正好我有一堆混亂的數據在每列中,我想安排他們,以排除影響額外的列每次我排序下降 – cbreezy

回答

2

我建議你從所記錄的代碼是什麼VBA實際需要單個列排序搬走。

Sub sortAllColumns() 
    Dim c As Long 

    On Error Resume Next '<~~ may be necessary if a column breaks the sort 
    With Worksheets("Sheet5") 
     For c = .UsedRange.Columns.Count To 1 Step -1 
      With .Columns(c) 
       .Cells.Sort Key1:=.Columns(1), Order1:=xlDescending, _ 
          Orientation:=xlTopToBottom, Header:=xlGuess 
      End With 
     Next c 
    End With 
End Sub 

順便說一句,你可能不應該xlGuess在頭的存在。 (xlYes)或不是(xlNo),但你知道你的數據比我好。

+0

你是一個生活品味感謝。我使用了錄音機代碼,因爲那是我過去一週學習的東西。現在,我將嘗試去理解我們實際的vba腳本,因爲它看起來非常簡單lol – cbreezy

+2

@cbreezy - 使用宏記錄器後開始的一個好地方是學習[如何避免使用'.Select' /'.Activate' ](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros),然後當你掌握了這一點,看看[各種循環中VBA](http://www.excel-easy.com/vba/loop.html)。 – BruceWayne

+0

@BruceWayne感謝您的幫助。我會檢查這些線程。 definiteley需要我學習如何加速我的腳本編寫 – cbreezy

相關問題