ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] JScript 字符串数组另类排序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-1-13 00:30 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:脚本语言应用

  1. Function sortarr(arr)
  2.     Dim s As String
  3.     Static sp1 As Object
  4.     If sp1 Is Nothing Then
  5.         s = s & "function Sortarr(arr)" & vbCrLf
  6.         s = s & "{" & vbCrLf
  7.         s = s & "var a, b ;" & vbCrLf
  8.         s = s & "a = arr.toArray();" & vbCrLf
  9.         s = s & "b = a.sort();" & vbCrLf
  10.         s = s & "return(b);" & vbCrLf
  11.         s = s & "}"
  12.         Set sp1 = CreateObject("ScriptControl")
  13.         sp1.Language = "JScript"
  14.         sp1.AddCode s
  15.     End If
  16.     sortarr = Split(sp1.Run("Sortarr", arr), ",")
  17. End Function


  18. Sub Mytest()
  19. 'aa = [a1:a60000] ' 60000个约0.5秒
  20.     aa = Array("张", "王", "李", "赵", "钱", "孙", "周", "吴", "郑", "王")
  21.     t = Timer
  22.     aa = sortarr(aa)
  23.     Debug.Print Timer - t
  24.     '排序结果  吴,周,孙,张,李,王,王,赵,郑,钱
  25.     '说明 排序结果与EXCEL的不同,这个方法的是按照ASC码排序的
  26. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-2-14 10:42 | 显示全部楼层
学习了.你这方法够高效的

TA的精华主题

TA的得分主题

发表于 2009-2-14 09:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
JS的SORT方法可以不只这么点哦。

TA的精华主题

TA的得分主题

发表于 2009-2-14 08:24 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-2-14 14:45 | 显示全部楼层
原帖由 wudixin96 于 2009-2-14 09:49 发表
JS的SORT方法可以不只这么点哦。


JS 纯属初学乍练,大概知道 VBS 像 VB JS 像 VC,

   用 b = a.sort().reverse() 可以实现倒序排列,没学过VC,其他就不知道了。

通过 JS 可以把 VC中的一些高效实用的方法 引入到VBA中。

吴兄(呵呵猜得)如果懂 JS或 VC,弄点例子来学学。

TA的精华主题

TA的得分主题

发表于 2009-2-14 15:01 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-2-14 15:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

脚本语句可以再简化一下


  1. Function sortarr(arr)
  2.     Dim s As String
  3.     Static sp1 As Object
  4.   ' s = "function sortarr(arr){return(arr.toArray().sort().reverse());}" '倒序
  5.     s = "function sortarr(arr){return(arr.toArray().sort());}"    '顺序
  6.     If sp1 Is Nothing Then
  7.         Set sp1 = CreateObject("ScriptControl")
  8.         sp1.Language = "JScript"
  9.     End If
  10.     sp1.AddCode s
  11.     sortarr = Split(sp1.Run("sortarr", arr), ",")
  12. End Function
复制代码

TA的精华主题

TA的得分主题

发表于 2009-2-14 15:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
'排序结果  吴,周,孙,张,李,王,王,赵,郑,钱
    '说明 排序结果与EXCEL的不同,这个方法的是按照ASC码排序的
--------------------------------------- -----------------------------------------------
请问楼主大大,在你的代码里没看见有转换字符到编码的语句啊?
汉字在ASCII里有编码吗?是不是 Unicode 啊?
不懂阿,特来请教

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-2-14 16:04 | 显示全部楼层
JS中的sort方法 就是按照ASCII码排序

print asc("好")
-17725
print chr(-17725 )

TA的精华主题

TA的得分主题

发表于 2009-2-14 16:24 | 显示全部楼层

我搜了一下 JavaScript String 对象参考手册 ,只发现有2个比较接近
哪里有更全面点的啊???

charAt()                         返回在指定位置的字符。
charCodeAt()              返回在指定的位置的字符的 Unicode 编码。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-22 23:40 , Processed in 0.041626 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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