Excel:根据另一列对列进行sorting

我想根据列B的值来定购列A.

在Google文档中,简单地说就是:=sorting(A1:A100,B1:B100)

如何在Excel中做到这一点?

要手动执行此操作,可以突出显示要分类的所有列,然后单击“主页”选项卡中“sorting和筛选”下的“自定义sorting…”。 这会popup一个对话框,您可以告诉它要sorting的列,添加多个sorting级别等。

如果您知道如何在Excel中手动执行某些操作,并且想要了解如何使用VBA以编程方式执行此操作,则可以简单地logging自己的macros,然后查看它生成的源代码。 我这样做是根据B列对列A和B进行sorting,并从生成的代码中提取相关的代码:

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 

请注意,自动生成的代码几乎总是有不必要的膨胀。 但是,找出可能需要使用或研究的function是一个很好的方法。 在这种情况下,您可以将其修剪为如下所示:

 Range("A1:B6").Sort Key1:=Range("B1:B6"), Order1:=xlAscending 

如果您只想重新排列列A的内容而不触摸列B(即使您将其用作sorting键),您可能需要进行临时复制,sorting并仅复制A列。这是因为Excel的sortingfunction要求sorting键在被sorting的范围内。 所以,它可能是这样的:

 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 

谢谢@brunosan:D

最后我得到了答案,因为@brunosan问题几天后,我没有find答案在Excel电子表格中关于我的问题。 基于@brunosan的问题,我尝试了sorting公式,突然间我试图在谷歌电子表格上的另一个“sorting”选项。

所以这是我解决的问题:

我有列A中的值,但列A中的值必须更新。 更新后的数据放在B列中,所以我把原始数据保存在A列中进行比较。 与图片

之前

但麻烦的是B列中的更新数据(基于列A数据)与A列不再相同。您可以在上图中看到。 有几个数据已被删除或丢失,所以我有一个空的行。

问题是,我想要replace更新的数据相同的结构与A列。这是不存在的数据留空白。 所以我试图在谷歌表中select所有列和sorting范围,然后selectsorting列A和瞧,我想要的结果。 :D见下图。

你可以想象,我有一百个数据,直到一万个数据,如此一来,我浪费了很多时间,直到下降:D。

NB:对于模糊的数据我很抱歉:D

这是一个animationforms的手动方法:

在这里输入图像说明