ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2958|回复: 19

[求助] 先排字母后排数字的顺序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-1-15 18:02 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
先排字母后排数字的顺序。

先排字母后排数字的顺序.rar

6.04 KB, 下载次数: 34

TA的精华主题

TA的得分主题

发表于 2015-1-15 18:53 | 显示全部楼层
  1. Sub test()
  2. '需要安装ACTIVERUBY ,下载地址 http://www.artonx.org/data/asr/Ruby-2.1.1.msi
  3. Set ojs = CreateObject("Scriptcontrol"): ojs.Language = "rubyscript"
  4. ojs.eval ("def aa(aa) $aa=aa.flatten end")
  5. y = ojs.Run("aa", Range("A1", [a1].End(4)).Value)
  6. y = ojs.eval("$aa.sort_by{|x|a=x.split(/(\d+)/);[a[0],a[1].to_i]}.zip")
  7. [c1].Resize(UBound(y) + 1) = y
  8. 'Stop
  9. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-1-15 19:32 | 显示全部楼层
  1. Sub aa()
  2. arr = [a1:a15]

  3. brr = YjhSort(arr, "REa;\d,RE1;\D", "1,1")

  4. [f1:f15] = brr

  5. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-1-15 19:33 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-15 19:48 | 显示全部楼层
yjh_27 发表于 2015-1-15 19:33
参见附件。

请再看一看。

先排字母后排数字的顺序yj.rar

69.95 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2015-1-15 20:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
张雄友 发表于 2015-1-15 19:48
请再看一看。

忽略大小写。
brr = YjhSort(arr, "REA;\d,RE1;\D", "1,1")

区分大小写
brr = YjhSort(arr, "REa;\d,RE1;\D", "1,1")

需下载本楼附件

先排字母后排数字的顺序yj.rar

70.86 KB, 下载次数: 14

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-15 20:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
yjh_27 发表于 2015-1-15 20:04
忽略大小写。
brr = YjhSort(arr, "REA;\d,RE1;\D", "1,1")

有个奇怪的现象,连续执行几十次,会发现大小写字母不断变化的。

TA的精华主题

TA的得分主题

发表于 2015-1-15 20:32 | 显示全部楼层
本帖最后由 yjh_27 于 2015-1-15 20:34 编辑
张雄友 发表于 2015-1-15 20:24
有个奇怪的现象,连续执行几十次,会发现大小写字母不断变化的。

忽略大小写后
ADD312
aDD312
视为相同,排序随机

如需固定,加一级规则
brr = YjhSort(arr, "REA;\d,REa;\d,RE1;\D", "1,1,1")

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-1-15 21:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub 先排字母后排数字()
  2.   Application.ScreenUpdating = False
  3.   Dim arr, brr, s$, a, b, i, k, n
  4.   arr = Range("a1", [a65536].End(3))
  5.   brr = arr
  6.   For i = 1 To UBound(arr)
  7.     s = arr(i, 1)
  8.     For n = 1 To Len(arr(i, 1))
  9.        If IsNumeric(Mid(s, n, 1)) Then
  10.           a = Left(s, n - 1)
  11.           b = Mid(s, n) + 1000000
  12.           Exit For
  13.        End If
  14.     Next
  15.     k = 3 - Len(a)
  16.     brr(i, 1) = a & String(k, "@") & b & "$" & s
  17.   Next
  18.   [h1].Resize(UBound(arr)) = brr
  19.   [h1].Resize(UBound(arr)).Sort [h1], 1
  20.   [h1].Resize(UBound(arr)).Replace "*$", ""
  21.   Application.ScreenUpdating = True
  22. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-1-15 21:05 | 显示全部楼层
测试附件。。。。。。

先排字母后排数字的顺序.rar

12.55 KB, 下载次数: 26

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 11:35 , Processed in 0.054543 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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