excel 非整数排序问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 08:03:55
规格

1/4*3/8
1/4*1/4
1/2*1/4
1/2*3/8
1/2*1
1/2*7/8

现在要按照分数大小升序 例如1/4小于1/2 1/4小于5/16
1/4*1/4
1/4*5/16
1/4*3/8
1/4*1/2
1/2*1/4
1/2*3/8
1/2*1/2
1/2*5/8
1/2*3/4
1/2*7/8
1/2*1

现问题在于EXCEL排序功能按升序后得到

1/2*1
1/2*1/4
1/2*3/8
1/2*7/8
1/4*1/4
1/4*3/8

1/2在1/4前面了

EXCEL降序得到

1/4*3/8
1/4*1/4
1/2*7/8
1/2*3/8
1/2*1/4
1/2*1

3/8大于1/4了

有什么方法可以先判断*号前面的分数大小升序 再按*号后面的分数升序
用EXCEL排序的常规方法(升和降)都不能得到理想结果
行数很多 手动选区域太麻烦
添加辅助列还是没能按大小排序
例如 3/8 ,3/4, 5/8,1-3/8

插入一个辅助列,把你原来这列数据复制粘贴到辅助列

然后选中辅助列,点菜单- 数据-分列,固定分隔符,下一步,选其他,输入*,确定.

就分成两列了.

然后连同辅助列一起排序,主关键字是,辅助列的第一列,次关键字是辅助列的第二列.排序完把辅助列删除.OK

子易空间站 - 高效办公指导网站

使用VBA自动生成一个辅助列,然后按辅助列来排序就OK
原理及设计如下:
一、先将每一个单元格的内容读入变量,并按*号拆分为两段,如"1/4*3/8"拆为"1/4"和"3/8"。
二、分别将两段的分数都转换为小数,如1/4转换为0.25;3/8转换为0.375。
三、将两个数都乘以1000,再加100000得出的结果为102500和103750。
四、将新生成的两个数字合成一个字符,放到辅助列,用于排序就OK了:'102500103750。

不会编VBA代码的话,可以将此EXCEL文件发到我的邮箱(yxstone@qq.com),我帮你生成排序辅助列,之后发给你。

问题分析:规格显然是字符串格式,先比1再比/再比4和2...所以排序不能得到预期效果。1楼、2楼都忽略了一步把字符串变为数值的步骤,3楼的又有些麻烦。

分列后设置该列单元格格式为数值,保留的小数位数自己决定,再看看效果。

先把1/4*3/8拆分成两部分分别填入两列B和C列,1/4和3/8,B1=LEFT(A1,3),C1=MID(A1,5,4),再分别向下填充,然后分别进行升降序排列

是否为纸箱规格或材料规格之类,不单需要排*前的,还要排*后的?

方法1:将所有规格列中分数替换为小数(或另加辅助列,复制粘贴后再替换),再排序即可.

方法2:按一楼说的,
"先把1/4*3/8拆分成两部分分别填入两列B和C列",但"进行升降序排列"时须记得进行多级排序