|
数组扩展类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 编辑 ] |
|