Excel 如何从a到Z对列中的单元格进行排序?
代码来自稍微编辑过的宏。我试图删除“凌乱的代码”,但它不起作用。它的目的是将BF列中的数据从A排序到ZExcel 如何从a到Z对列中的单元格进行排序?,excel,vba,Excel,Vba,代码来自稍微编辑过的宏。我试图删除“凌乱的代码”,但它不起作用。它的目的是将BF列中的数据从A排序到Z Dim InSheet As Worksheet Set InSheet = ThisWorkbook.Worksheets("A to Z") Dim LastRow as Integer LastRow = InSheet.Cells(Rows.Count, 58).End(xlUp).Row InSheet.Select Columns("BF:BF").
Dim InSheet As Worksheet
Set InSheet = ThisWorkbook.Worksheets("A to Z")
Dim LastRow as Integer
LastRow = InSheet.Cells(Rows.Count, 58).End(xlUp).Row
InSheet.Select
Columns("BF:BF").Select
InSheet.Sort.SortFields.Clear
InSheet.Sort.SortFields.Add Key:=Range( _
"BF1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With InSheet.Sort
.SetRange Range("A1:BF" & LastRow)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
所以我尝试了这个,但它不起作用:
Dim InSheet As Worksheet
Set InSheet = ThisWorkbook.Worksheets("A to Z")
Dim LastRow as Integer
LastRow = InSheet.Cells(Rows.Count, 58).End(xlUp).Row
InSheet.Columns("BF:BF")
InSheet.Sort.SortFields.Clear
InSheet.Sort.SortFields.Add Key:=Range( _
"BF1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With InSheet.Sort
.SetRange Range("A1:BF" & LastRow)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
有什么想法吗?我想真正避免
。选择其他东西,因为它会极大地降低性能。您可以直接用一个键对范围进行排序,而不必删除剩余的代码
Range("A1:BF" & LastRow).SORT Key1:=Range("BF1"), Order1:=xlAscending_
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal
我使用了史蒂文·马丁的答案和德米特里·帕夫利夫的评论提供的建议,效果非常好:
Dim InSheet As Worksheet
Set InSheet = ThisWorkbook.Worksheets("A to Z")
Dim LastRow As Integer
LastRow = InSheet.Cells(Rows.Count, 58).End(xlUp).Row
With InSheet.Sort ' sort data from A to Z
.SetRange InSheet.Range("A1:BF" & LastRow)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
+1对于我想真正避免。请选择其他内容。只需删除这一行InSheet.Columns(“BF:BF”)
,代码应该可以工作,还可以将.SetRange范围(“A1:BF”和LastRow)
更改为.SetRange InSheet.Range(“A1:BF”和LastRow)