Excel:根据另一列订购列

bru*_*san 7 excel

我想根据B列的值订购A栏.

在Google文档中,简单地说:=排序(A1:A100,B1:B100)

如何在Excel中执行此操作?

Mec*_*eer 6

这是动画形式的手动方法:

在此输入图像描述


Bra*_*don 5

要手动执行此操作,您可以突出显示要排序的所有列,然后单击"主页"选项卡中"排序和过滤"下的"自定义排序...".这会打开一个对话框,您可以在其中告诉它要排序的列,添加多个排序级别等.

如果您知道如何在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)