2017-03-17 26 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

相关问题