Sub test()
ActiveWorkbook.Worksheets("timesheet_report_2019-12-08_thr").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("timesheet_report_2019-12-08_thr").Sort.SortFields. _
Add2 Key:=Range("E2:E62"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("timesheet_report_2019-12-08_thr").Sort.SortFields. _
Add2 Key:=Range("B2:B62"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("timesheet_report_2019-12-08_thr").Sort.SortFields. _
Add2 Key:=Range("A2:A62"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("timesheet_report_2019-12-08_thr").Sort
.SetRange Range("A1:I62")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
这是我录制的用于为我排序数据的宏。每周要向活动工作表更改名称。如何将其放置在任何工作表上?
排序是一种可以通过工作表对象访问的方法。但是,您可以选择引用工作表对象,具体取决于您。
Excel在宏记录器中为您转录的方法使用工作表的名称作为索引。
ActiveWorkbook.Worksheets("timesheet_report_2019-12-08_thr").Sort...
注意,名称用引号引起来,因此是字符串。您可以创建一个字符串变量。以下代码与上面的工作相同。
Dim worksheetName as String
worksheetName = "timesheet_report_2019-12-08_thr"
ActiveWorkbook.Worksheets(worksheetName).Sort...
但是您也可以使用数字索引。这将对工作簿认为是集合中第一的工作表进行排序。 (这可能会引起误解,因此请谨慎行事。集合中的第一张工作表并不总是最左边的标签,甚至也不是名为“ Sheet1”的工作表。)
ActiveWorkbook.Worksheets(1).Sort...
您还可以使用某些关键字来引用工作表。一些评论者建议使用ActiveSheet。可行,因为它引用了工作表对象。
ActiveWorkbook.ActiveSheet.Sort...
而且,您可以从迭代器中获取引用,就像在“ for each”循环中一样。以下代码(带有排序功能)将对您在工作簿的每个工作表上设计的排序进行运行。
Sub SortAllSheets()
For Each s In ActiveWorkbook.Sheets
With s.Sort
.SortFields.Clear
.SortFields.Add2 Key:=s.Range("E2:E62"), Order:=xlAscending
.SortFields.Add2 Key:=s.Range("B2:B62"), Order:=xlAscending
.SortFields.Add2 Key:=s.Range("A2:A62"), Order:=xlAscending
.SetRange s.Range("A1:I62")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Next s
End Sub
因此,有很多方法可以在任何工作簿中运行排序。希望对您有所帮助。