ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 数组扩展类——Zamyi_Array(更新)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-1-31 17:45 | 显示全部楼层 |阅读模式
数组扩展类Zamyi_Array:
一、函数:Function ZIndex(Arr, Optional R As Long, Optional C As Long, Optional IsE As Boolean)
取得二维数组Arr的某一行或一列,当IsE为False时返回ZIndex(LBound(Arr) to UBound(Arr)),否则返回Index(LBound(Arr) to UBound(Arr),1 1 to 1)。n为Arr的列数或行数
微软的Application.Index速度简直不敢恭维而且下标受到65536的限制,ZIndex速度比Application.Index快不少。
二、函数:Function ZRnd(Min As Long, Max As Long, n As Long, Optional IsE As Boolean)  
产生n个从Min至Max的不重复随机数,当IsE=False时返回ZRnd(0 to n-1)数组,当IsE=True时返回ZRnd(1 to n,1 to 1)数组,
速度至少是我见过的VB中最快的,100万个还不到半秒。
三、方法:Sub ZSort(Arr(), Optional Order As Boolean, Optional Key As Long)
排序,Order为False时升序,否逆序,Key为False时Arr为一维数组,否则为Arr(1 to n, 1 to 1)格式
:用VB来写排序不是一个好办法,Range.Sort本来就很好,但了给不需要读写工作表时之用吧。速度在VB中还算可以,比冒泡排序快很多。支持一维排序A(n)和A(1 to n,1 to 1)。
四、方法:Sub ZRangeSort(R as Range,Optional Ord1 as Byte,Optional K1 as Integer)
对R进行排序:Ord1 为1-4,缺省为1,1为普通升序,2为普通降序,3为文数混合升序,4为文数混合降序。文数混合这样规定:DN50<DN100<DN125,而普通排序是:DN100<DN125<DN50。K1 为指定排序的相对列号。
它基于OFFICE 2007的Range.Sort,在07下通过,没有纯03版的,没测试。哪位有纯03版的测试后请告知。


使用方法:
工具——引用,选择Zamyi_Array.dll,在过程中:
Dim Z As New Zamyi_Array
Z.ZIndex ...
...
Set Z = Nothing

[ 本帖最后由 Zamyi 于 2010-2-4 11:25 编辑 ]

数组扩展类.rar

96.46 KB, 下载次数: 160

TA的精华主题

TA的得分主题

发表于 2010-1-31 17:53 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-1-31 18:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-1-31 20:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
辛苦了,收下学习。

TA的精华主题

TA的得分主题

发表于 2010-1-31 20:50 | 显示全部楼层
问个题外的问题
如何用vb创建一个标准的api 函数
可以像引用其他dll种的函数那样引用

TA的精华主题

TA的得分主题

发表于 2010-1-31 21:20 | 显示全部楼层

TA的精华主题

TA的得分主题

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

[ 本帖最后由 Zamyi 于 2010-2-5 10:28 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-2-1 22:13 | 显示全部楼层
原帖由 Zamyi 于 2010-2-1 10:20 发表

VB中创建的DLL只是COM组件,无法作为输出函数的DLL。其实MS非常狡猾,如果你是个VB疯狂发烧友的话,应该早就狂试出这种可以创建输出函数的DLL的方法。
     VB编译文件实际上采取了两次编译的方法,首先是调用C2 ...


这篇文章我也看了,可惜没搞出实例来,lz啥时候忙里偷闲给搞一个看看哈

TA的精华主题

TA的得分主题

发表于 2012-7-10 11:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Very good.Useful.Thanks a lot.

TA的精华主题

TA的得分主题

发表于 2012-7-9 21:05 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-5 18:13 , Processed in 0.040495 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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