对具有字符和数字的密钥进行sorting

我在我的macros中使用下面的代码sorting选定的列

Range("A14:CE" & lastRow).Sort key1:=Range(Cells(14, Col), Cells(lastRow, Col)), _Order1:=xlAscending, Header:=xlNo, key2:=Range("C14:C" & lastRow), Order2:=xlAscending, _Header:=xlNo 

我只是注意到,如果在单元格的末尾有数字,就会出现奇怪的行为,就像这个例子

在这里输入图像描述

左列中的数据将按照右列进行从A到Z的sorting,这不是我想要的。 我想有2个1,而不是10! 我检查了这是如何Excel本身sorting。 除了将文本更改为FM-001之外,有没有办法阻止它?

是的,斯科特是正确的,你需要2个文本和数字sepearate列,然后sorting;

如果这是唯一的组合,那么你可以使用

 =LEFT(A1,2) =RIGHT(A1,LEN(A1)-5) 

如果你没有一个共同的模式,但是首先是文字,然后是数字

 =LEFT(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A2&"0123456789"))-1) =RIGHT(A4,LEN(A4)-MIN(FIND({0,1,2,3,4,5,6,7,8,9},A4&"0123456789"))+1) 

没有我的笔记本电脑,但我会概述我的想法如下:

  1. 检测单元长度,如果len = 4,则将“ – ”replace为“-0”
  2. 对列进行sorting
  3. 检测单元的第三位,如果是0,则将“-0”replace为“ – ”