Excel正在sorting一个2位数字之前的3位数组合数字
以下是我正在尝试解决的一个列表。 问题是,Excel是基于我认为是升序字符进行sorting,因此130比“14”更less。是否有VBA函数来解决这个问题? 我试图将格式更改为文本,数字,小数等,但似乎没有任何工作。 并且区分大小写,所以我不能在14之前input一个0,尽可能多!
这是excel如何sorting的数字:
- 2A-130.1
- 2A-14
- 2A-150.1
- 2A-22
- 2A-22
- 2A-22
- 图2A-41
- 2A-86
- 2A-86
- 图2C-12
这是我正在寻找的:
- 2A-14
- 2A-22
- 2A-22
- 2A-22
- 图2A-41
- 2A-86
- 2A-86
- 2A-130.1
- 2A-150.1
- 图2C-12
编辑:::试图使用帮手列后,这是现在的数据看起来像
- 图2C-12
- 2A-14
- 2A-22
- 2A-22
- 2A-22
- 图2A-41
- 2A-86
- 2A-86
- 2A-130.1
使用如下所示的Helper列:
- 12
- 14
- 22
- 22
- 22
- 41
- 86
- 86
- 130.1
使用这个公式=RIGHT(B2,(LEN(B2))-FIND("-",B2,1)*1)
你可以告诉C出现在A之前,因为现在它正在按照数字sorting。 在评论中引用的页面帮了很大忙,但是那些有一个不变的variables,他们指的是我的数字后面可以是任何字母。
Dubison发布了什么,但略有不同。 他认为起始数字始终为2
,不pipe起始数字是什么(包括像37这样的多位数字):
数据和sorting设置:
sorting对话框:
我用以下公式达到了预期的效果:
我的工作表布局是这样的:
和公式:
B1: =MID(A1,2,1)
(为了得到这个字母,你可以用几种方法检索它)
C1: =IFERROR(REPLACE(RIGHT(A1,LEN(A1)-FIND("-",A1,1)),FIND(".",RIGHT(A1,LEN(A1)-FIND("-",A1,1)),1),1,","),RIGHT(A1,LEN(A1)-FIND("-",A1,1)))
(要获得数字并将“。”转换为“,”这是我的小数分隔符)
然后我在“sorting和筛选”下应用“自定义sorting”,如下所示:
如果你得到任何警告:
如果一切顺利,你应该得到如下结果: