要手动执行此操作,您可以突出显示要排序的所有列,然后单击"主页"选项卡中"排序和过滤"下的"自定义排序...".这会打开一个对话框,您可以在其中告诉它要排序的列,添加多个排序级别等.
如果您知道如何在Excel中手动执行某些操作并想要了解如何使用VBA以编程方式执行此操作,则只需记录自己手动执行此操作的宏,然后查看它生成的源代码.我这样做是为了根据B列对A列和B列进行排序,并从生成的内容中提取相关代码:
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B1:B6"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A1:B6")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
Run Code Online (Sandbox Code Playgroud)
请注意,自动生成的代码几乎总是有不必要的膨胀.但是,这是一个很好的方法来确定您可能需要使用或研究更多的功能.在这种情况下,您可以将其修剪为以下内容:
Range("A1:B6").Sort Key1:=Range("B1:B6"), Order1:=xlAscending
Run Code Online (Sandbox Code Playgroud)
如果您只想重新排序A列的内容而不触及B列(即使您将其用作排序键),您可能需要制作临时副本,对其进行排序,然后仅复制A列.这是因为Excel的Sort函数要求排序键在要排序的范围内.所以,它可能看起来像这样:
Application.ScreenUpdating = False
Range("A1:B6").Copy Destination:=Range("G1:H6")
Range("G1:H6").Sort Key1:=Range("H1:H6"), Order1:=xlAscending
Range("G1:G6").Copy Destination:=Range("A1:A6")
Range("G1:H6").Clear
Application.ScreenUpdating = True
Run Code Online (Sandbox Code Playgroud)