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”,如下所示:

在这里输入图像说明

如果你得到任何警告:

在这里输入图像说明

如果一切顺利,你应该得到如下结果:

在这里输入图像说明