在Excel中进行高级排序

时间:2019-02-21 19:15:37

标签: 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进行排序,或者如果存在7-267-1和7-267-3,则接近1级

有什么解决办法吗?谢谢

编辑:

here is image for easier understanding because it is hard to explain

感谢所有答案,尤其是Daniel是Excel方面的专家并且了解我的需求。

我的意思是没有VBA不会有类似的解决方案,但是Daniel向我展示了我错了。再次感谢。

那是我所需要的,但是如果您能帮助我,那会有些错误

这是其他位置的示例:

this is unsorted locations with formulas you give me

这是经过排序的,但是顺序错误:

bad sort

这里有错误:

errors

我们有120行,数字大于99,则显示错误,第二行中的数字22-250-1在-25中出现

在此示例中,我尝试使用您输入的数字进行公式运算,我得到的排序与您相同,但是输入其他位置后,排序出现了错误。

1 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow!

我想我知道要求什么。有点难以解释,但我会尝试一下。

主要排序如下:

  1. 如果第一位数字是34,则它应该降序排列,否则升序。
  2. 如果中间的三位数字来自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),)

您现在可以开始排序: [Advanced Sorting[1]

  

结果:

您现在将按预期对数据进行排序: Advanced Sorting Results