google-sheets-formula - 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,但部分按最左边票号的字母顺序排列
任何人都可以帮忙吗?
解决方案
通过临时列,我的意思是它只是在运行中创建和使用,而不是在工作表中实际创建和使用。
在工作表第 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 列),最后对结果进行查询以仅保留前四个已排序的列,丢弃临时列。
如果您有其他特定的排序要求,这种方法应该很容易修改。
这能满足您的需要吗?如果没有,请告诉我们问题是什么,或者我是否误解了。
推荐阅读
- javascript - 如何在 Vue setup() 方法中访问 Vuex 商店?
- f# - F# 中的扩展运算符
- html - 使用 AJAX 的 formsubmit.co 正在发送空电子邮件
- python - Python:圆形浮点数保持0
- python-3.x - 使用 if elif else 语句 + 导入随机选择创建了一个 python 彩票抽奖
- javascript - Javascript 计数器故障排除
- azure - 部署 Azure Bot 错误“此版本中不允许更新聚合应用程序。”
- python - 在 Jupyter Notebook 中将 ipynb-file 连接到内核失败,py-file 工作
- c# - 如何从字符串列表中的名称和类型动态创建 DataTable 列?
- json - 使用 JsonUnwrapped 时,Jackson 是否可以同时接受已包装和未包装的 Json