让我们假设一个图表只包含前两列A和B中的值,如下所示
首先,我想按字母A按字母顺序对图表进行排序,即顶部的X,然后是Y和Z。
第二步应该是考虑到A列的B列的排序,即保留X的块并在B列中对它们进行排序。与Y和Z的块相同。
第一步可以正常使用以下代码:
Sub sort()
Dim SortClmn As String
Dim Area As String
Area= "A1:B10"
SortClmn = "A"
ActiveSheet.Range(Area).Sort _
Key1:=Range(SortClmn & "1"), Order1:=xlDescending, _
Header:=xlGuess, MatchCase:=False, _
Orientation:=xlTopToBottom
End Sub
如何更改此代码以应用第二步?
提前致谢
答案 0 :(得分:1)
最简单的方法是对B列进行排序,然后对A列进行排序,这将达到您想要的效果。 使用您使用的相同方法,但是先排列第b列,然后排列a。
如果我修改你的代码,它将如下所示
Sub sort()
Dim SortClmn As String
Dim Area As String
Area = "A1:B10"
SortClmn = "B"
ActiveSheet.Range(Area).sort _
Key1:=Range(SortClmn & "1"), Order1:=xlAscending, _
Header:=xlGuess, MatchCase:=False, _
Orientation:=xlTopToBottom
Area = "A1:B10"
SortClmn = "A"
ActiveSheet.Range(Area).sort _
Key1:=Range(SortClmn & "1"), Order1:=xlAscending, _
Header:=xlGuess, MatchCase:=False, _
Orientation:=xlTopToBottom
End Sub
答案 1 :(得分:0)
Select
,Activate
并放入字符串变量; 答案 2 :(得分:0)
Sub sort()
lastRow = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
With ActiveWorkbook.ActiveSheet.sort
.SortFields.Clear
.SortFields.Add Key:=Range("A1:A" & lastRow), Order:=xlAscending
.SortFields.Add Key:=Range("B1:B" & lastRow), Order:=xlAscending
.SetRange Range("A2:B" & lastRow)
.Header = xlNo
.Apply
End With
End Sub
这样的东西?
答案 3 :(得分:0)
虽然我(就像@Vityata)认为你可以只记录一个宏并相应地编辑代码....我会给你一个直接的例子:
Activesheet.Range("A:B").Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range("B1"), Order2:=xlAscending, Header:=xlNo, MatchCase:=False, Orientation:=xlTopToBottom