首页 > 解决方案 > 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

我尝试使用您在此示例中输入的数字的公式,我得到了和你一样的好排序,但是在输入其他地方后,有一些不好的排序。

标签: excel

解决方案


欢迎来到 StackOverflow!

我想我理解所要求的。这有点难以解释,但我会试一试。

初级排序如下:

  1. 如果第一个数字是3or 4,那么它应该按降序排列,否则按升序排列。
  2. 如果中间的 3 位数字来自一个34编号的序列(参见上面的 #1),那么中间的对应该按降序排列。
  3. 所有序列都应根据其最后一位升序排列。

我的解决方案将序列分成不同的列:

例如,创建三列:FirstSecondThird

的公式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),)

您现在可以开始排序:[高级排序[1]

结果:

您现在将按预期对数据进行排序: 高级排序结果


推荐阅读