excel - Excel 中的高级排序
问题描述
在我们的仓库中,我们有偶数/奇数位置系统。
这是示例:
1-101-1
1-103-1
1-105-1
....
1-285-1
和
2-102-1
2-104-1
2-116-1
2-240-1
....
2-286-1
也有等级
1-101-2
1-101-3
1-101-4
有很多数据,我需要这样的排序:
示例编号:
1-101-1
2-130-1
1-131-1
1-150-2
2-132-3
3-229-5
4-262-1
4-286-5
7-267-1
5-239-1
6-270-1
7-267-3
我需要这样的排序:
1-101-1
2-130-1
1-131-1
2-132-3
4-286-5
4-262-1
3-229-5
5-239-1
6-270-1
7-267-1
7-267-1
点是前两个数字(1 -101-1;2 -102-1)从小到大,接下来的两个(3 -285-1;4 -286)从大到小,5 - 6 从小到大到最大,并用那个系统到最后
排序的第二件事是中间数字,该数字将首先从最小到最大,然后从最大到最小,最后一个数字是级别,与级别 1 相同但必须排序为级别 1,或者接近级别 1如果有 7-267-1 和 7-267-3
有什么解决办法吗?谢谢
编辑:
感谢所有人的回答,尤其是作为 Excel 专家并了解我需要什么的 Daniel。
我的意思是没有 VBA 就没有解决方案,但丹尼尔告诉我我错了。再次感谢。
这就是我需要的,但是有一些错误,如果你能帮助我的话
这是其他位置的另一个示例:
这是排序的,但顺序不好:
这里有错误:
我们有 120 行,大于 99 的数字显示错误,数字 22-250-1 在第二行进入 -25
我尝试使用您在此示例中输入的数字的公式,我得到了和你一样的好排序,但是在输入其他地方后,有一些不好的排序。
解决方案
欢迎来到 StackOverflow!
我想我理解所要求的。这有点难以解释,但我会试一试。
初级排序如下:
- 如果第一个数字是
3
or4
,那么它应该按降序排列,否则按升序排列。 - 如果中间的 3 位数字来自一个
3
或4
编号的序列(参见上面的 #1),那么中间的对应该按降序排列。 - 所有序列都应根据其最后一位升序排列。
我的解决方案将序列分成不同的列:
例如,创建三列:First
、Second
、Third
。
的公式First
:
=INT(LEFT(A2, 1))
的公式Second
:
=INT(RIGHT(LEFT(A2,5), 3))
的公式Third
:
=INT(RIGHT(A2,1))
接下来,我们为这三个字段的排序分配值:
创建一个标记为 的列First_Sort_Pair
:
=IF(OR(B2=1,B2=2),1,
IF(B2=3,3,
IF(B2=4,2,
IF(OR(B2=5,B2=6),4,
IF(OR(B2=7,B2=8),5,6)))))
创建一个标记为 的列First_Sort
:
=IF(OR(B2=3, B2=4), 2, 1)
创建一个标记为 的列Second_Sort
:
=IF(E2=4, 2, IF(E2=3, 3, 1))
创建一个标记为 的列Sort_3_4
:
=IF(OR(B2=3,B2=4),RANK(C2,C:C,0),)
您现在可以开始排序:[
结果:
推荐阅读
- django - 如何在表单的多个位置使用一个字段的输入?
- sql - 如何在“IN Condition”中包含 Null
- arduino - SIM800L 收到的短信卡在内存中
- javascript - 如何在html中呈现1行2列?
- vb.net - 如何在VB中用逗号替换多个空格?
- mysql - 如何使用外键获取三张表数据
- python - 我在哪里可以找到 uWSGI v2.1?它不在pypi上
- python - Django 使用多对多数据库的选项填充下拉菜单
- javascript - Photoshop脚本扭曲智能对象并找到坐标
- python - python - 如何在给定范围内的给定函数中找到最大值?