Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2511|回复: 3

按字母先后排序

[复制链接]
发表于 2015-4-7 22:11 | 显示全部楼层 |阅读模式
按字母先后排序。

按字母先后排序.rar

3.84 KB, 下载次数: 12

发表于 2015-4-7 22:36 | 显示全部楼层
写的不好,方法太笨,仅供参考
  1. Sub x()
  2. Dim r, x%, ro%, s%, rng
  3. ro = [a65500].End(3).Row
  4. Set r = CreateObject("vbscript.regexp")
  5.   r.Global = True
  6.   r.Pattern = "[^0-9]+|[0-9]+"
  7.    For Each rng In Range("a1:a" & ro)
  8.      s = 1
  9.        For Each mat In r.Execute(rng)
  10.          rng(1, s + 4) = IIf(s = 2, Val(mat), mat)
  11.          s = s + 1
  12.         Next
  13.    Next
  14.    Range("e1").CurrentRegion.Sort key1:=[e1], order1:=xlAscending, key2:=[f1], order2:=xlAscending, Header:=xlNo
  15.    For x = 1 To ro
  16.        Cells(x, 1) = Cells(x, 5) & Cells(x, 6)
  17.    Next
  18. End Sub
复制代码
回复

使用道具 举报

发表于 2015-4-8 09:01 | 显示全部楼层
  1. Sub Macro1()
  2. Dim arr, brr, i&
  3. arr = Range("a1").CurrentRegion
  4. ReDim brr(1 To UBound(arr), 1 To 2)
  5. With CreateObject("vbscript.regexp")
  6.     .Pattern = "\d"
  7.     .Global = True
  8.     For i = 1 To UBound(arr)
  9.         brr(i, 1) = .Replace(arr(i, 1), "")
  10.         brr(i, 2) = Replace(arr(i, 1), brr(i, 1), "")
  11.     Next
  12. End With
  13. Range("b1").Resize(UBound(brr), 2) = brr
  14. Range("a1").CurrentRegion.Sort Key1:=[b1], Key2:=[c1], Header:=xlGuess
  15. [b:c] = ""
  16. End Sub
复制代码

点评

替换的办法,能不能在原地排序?就是不借助辅助区域。如:B,C列。  发表于 2015-4-8 18:52

评分

参与人数 1 +6 收起 理由
张雄友 + 6 很给力!

查看全部评分

回复

使用道具 举报

发表于 2015-4-9 08:30 | 显示全部楼层
数组排序比较麻烦,一般不采用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-22 19:12 , Processed in 0.517195 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表