我想根据B列的值订购A列。
在简单的Google文档中:=排序(A1:A100,B1:B100)
如何在Excel中执行此操作?
答案 0 :(得分: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
请注意,自动生成的代码几乎总是有不必要的膨胀。但是,这是一个很好的方法来确定您可能需要使用或研究更多的功能。在这种情况下,你可以把它修剪成这样的东西:
Range("A1:B6").Sort Key1:=Range("B1:B6"), Order1:=xlAscending
如果您只想重新排序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
答案 1 :(得分:0)
谢谢@brunosan:D
最后我得到了答案,因为@brunosan问题几天之后我没有在excel电子表格中找到关于我的问题的答案。基于@brunosan问题,我尝试了排序公式,突然我在谷歌电子表格上尝试另一种“排序”选项。
所以这是我解决的问题:
我在A列中有值,但A列中的值必须更新。更新后的数据I放在B列中,因此我将原始数据保留在A列中,以便稍后进行比较。与图片
但问题是B列中的更新数据(基于A列数据)与A列的结构不再相同。您可以在上图中看到。有几个数据已删除或丢失,所以我有一个空行。
问题是我想要替换与A列结构相同的更新数据。哪些数据不存在留空。所以我尝试在谷歌表中选择所有列和SORT RANGE,然后选择SORT BY COLUMN A.瞧,我想要的结果。 :D见下图。
你可以想象我有一百个数据直到百万个数据,如果我一个接一个地检查直到掉落那么浪费时间:D。
nb:对于模糊的数据我很抱歉:D
答案 2 :(得分:0)
答案 3 :(得分:0)
使用= SORTBY()函数;其格式为
= SORTBY(array,by_array1,[sort_order1],by_array2,[sort_order2] ...),
但最简单的是
= SORTBY(array,by_array1,[sort_order1]),
这是基本的。它可以像您期望的那样工作。进一步的数组将使用by_array(n)在by_array(n-1)内排序。