vba字符串排序,按数值大小来排(固定字符+数值):

如有:A1,A2,B2,B1,A11,B12。。。
排序后:A1,A2,A11,B1,B12
这里的A,B可能就是字符串AAA或者汉字。

假设这一列数据在A列。
我们可以在B列添加一个辅助列,排序后再删除这个辅助列。。
这样在B1输入:
=LEFT(A1,MATCH(0,0/MID($A1,ROW(INDIRECT("1:" &LEN(A1))),1),0)-1)&TEXT(RIGHT(A1,LEN(A1)-MATCH(0,0/MID($A1,ROW(INDIRECT("1:" &LEN(A1))),1),0)+1),"00000#")

同时按下CTRL+SHIFT+回车。
下拉复制填充后,
选择B列,复制,右键选择性粘贴--数值。
选择AB两列排序,选择B列升序。

确定后删除B列即可追问

你好,这个方法是可行的,但是更希望完全用vba数组来实现。谢谢。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-27
A01
A02
B02
B01
A11
B12
既然是文本排序,那么数字的编号位数要相同。
第2个回答  2012-09-27
这要区分对待了,先按汉字排序后再按数字排序,可采用先把他们分列再排序的方法(采用数组中循环由一列的数组变成两列的数组,再按这两列直接排序