Excel 如何在VBA中根据一个参数,然后根据另一个参数进行排序?
我已经成功地编写了代码,一旦从下拉列表中选择了一个选项,该代码将自动对数据进行排序。该代码如下:Excel 如何在VBA中根据一个参数,然后根据另一个参数进行排序?,excel,vba,Excel,Vba,我已经成功地编写了代码,一旦从下拉列表中选择了一个选项,该代码将自动对数据进行排序。该代码如下: Private Sub Worksheet_Change(ByVal Target As Range) Range("A7:AF200").Sort key1:=Range("D7:D200"), _ order1:=xlAscending, Header:=xlNo Dim lastrow As Long lastrow = Cells(Rows.Cou
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A7:AF200").Sort key1:=Range("D7:D200"), _
order1:=xlAscending, Header:=xlNo
Dim lastrow As Long
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
Range("A7:AF" & lastrow).Sort key1:=Range("D7:D" & lastrow), _
order1:=xlAscending, Header:=xlNo
ActiveWorkbook.Worksheets("Job List").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Job List").Sort.SortFields.Add Key:=Range("D:D"), _
SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"Pre-Design,Design,Tender,Construction,Post Construction", DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Job List").Sort
.SetRange Range("A7:AE9999")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
但是,在按自定义顺序对作业列表进行排序之后,我需要按照单元格A7:A中输入的作业编号对数据进行升序排序
例如:
110.05客户端BC预设计
21.02客户端XYZ预设计
84.10客户新的预设计
变成
21.02客户端XYZ预设计
84.10客户新的预设计
110.05客户端BC预设计
通过添加额外的排序,可以自动对多个列进行排序
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A7:AF200").Sort key1:=Range("D7:D200"), _
order1:=xlAscending, Header:=xlNo
Dim lastrow As Long
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
Range("A7:AF" & lastrow).Sort key1:=Range("D7:D" & lastrow), _
order1:=xlAscending, Header:=xlNo
ActiveWorkbook.Worksheets("Job List").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Job List").Sort.SortFields.Add Key:=Range("D:D"), _
SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"Pre-Design,Design,Tender,Construction,Post Construction", DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Job List").Sort.SortFields.Add Key:=Range("A7:A9999"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Job List").Sort
.SetRange Range("A7:AE9999")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
你知道这是三种排序操作,它们做的几乎完全一样…?显然不是,我的编码教育可以追溯到5年前大学的一个短期初学者课程。从那以后就没用过!