Excel 如何从a到Z对列中的单元格进行排序?

Excel 如何从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").

代码来自稍微编辑过的宏。我试图删除“凌乱的代码”,但它不起作用。它的目的是将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").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)