首页 > 解决方案 > Google表格公式用于对具有多个排序条件的数据范围进行排序,以便分配给一列

问题描述

我正在尝试对我每天收集的一系列数据进行排序。我收集的数据大致如下所示:

Location    Ticket  Part    Quantity
B           1003    Thing 2 3
B           8001    Thing 4 5
A           4002    Thing 3 1
A           1001    Thing 1 1
C           8003    Thing 1 7
B           4003    Thing 5 2
A           1002    Thing 1 4
B           8002    Thing 1 3
C           4001    Thing 1 1 

目前我手动对数据进行排序,使其最终看起来像这样

Location    Ticket  Part    Quantity
A           1002    Thing 1 1
A           1001    Thing 1 4
A           4002    Thing 3 1
B           1003    Thing 2 3
B           4003    Thing 5 2
B           8001    Thing 4 5
B           8002    Thing 1 3
C           4001    Thing 1 1
C           8003    Thing 1 7

为了清楚起见,我希望对原始数据进行排序,使其排列如下

列位置降序,然后列票证按其最左边的数字 1,4 和 8 降序,但以这样的方式,列的部分将按最左边票号的字母顺序,1,4,8 和排序顺序的位置将保持升序排序

我不知道如何对列 Location 升序排序,然后按两组标准对列 Ticket 进行排序。我想在不更改位置顺序的情况下通过定位对票证进行升序排序,然后在不更改列位置排序升序或列票证中最左边的数字的升序排序的情况下对列部分升序进行排序。

在这里总结一下我需要再次从公式中得到的顺序

列位置升序 列票相对于其位置上升 1,4 和 8 列部分按列票升序以保留 1,4,8 顺序并保持按其位置组织的方式

关键是列 Part 必须按工单组 1、4、8 的字母顺序排序,而不是相对于完整的工单号按字母顺序排序。这是我的意思的另一个例子:

Location    Ticket  Part
B           1999    Thing 1
B           1002    Thing 2
B           4002    Thing 2
B           4001    Thing 3
B           8888    Thing 1
B           8000    Thing 2
B           8999    Thing 3
C           1003    Thing 1

尽管 1999 年第 1 行票大于第 2 行 1002,但部分按最左边票号的字母顺序排列

任何人都可以帮忙吗?

标签: google-sheets-formula

解决方案


通过临时列,我的意思是它只是在运行中创建和使用,而不是在工作表中实际创建和使用。

在工作表第 2 行的任何位置尝试这个公式。

=QUERY(SORT({A2:D,ARRAYFORMULA(LEFT(B2:B,1))},1,1,5,1,3,1),"select Col1, Col2, Col3, Col4",0)

这将使用您的数据创建一个数组,来自 A2:D,添加从 B 列中最左边的字符创建的临时列,按数组的第 1 列(位置)排序,然后按临时列(列 '5'),然后按部分(第 3 列),最后对结果进行查询以仅保留前四个已排序的列,丢弃临时列。

如果您有其他特定的排序要求,这种方法应该很容易修改。

这能满足您的需要吗?如果没有,请告诉我们问题是什么,或者我是否误解了。

在此处输入图像描述


推荐阅读