Vba 如何按两列对Excel工作表进行排序
让我们假设一个图表只有前两列a和B中的值,如下所示 首先,我想按字母顺序将图表按列A排序,即顶部的X,然后是Y和Z 第二步应考虑a列,对B列进行排序,即保留X块,并在B列对其编号进行排序。与Y和Z块相同 第一步适用于以下代码:Vba 如何按两列对Excel工作表进行排序,vba,excel,sorting,Vba,Excel,Sorting,让我们假设一个图表只有前两列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
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
我需要如何更改此代码以应用第二步
提前谢谢
选择
,激活
并放入字符串变量李>
最简单的方法是对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
类似这样的内容?谢谢@Ricards,但此代码仅对第2列进行排序。第一步不知何故被否决了。我做了一个测试,对两列进行了排序,所以a列被排序在B列之后,但B仍然被细分为a列。这对我来说确实有效。。。
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