UDF.dll包含了一组实用的用户自定义函数,提供了数组处理的快速方法,可以在VB6、VBS、32位VBA中调用。

看完如下的实例代码,就明白它的用处了。

Private MyUDF As New UDF.ArrayConversion
Sub 是否包含某元素()
Dim Array1( To ) As String
Array1() = "Word"
Array1() = "Excel"
Array1() = "Outlook"
Array1() = "Access"
Debug.Print MyUDF.Contains(Array1, "Excel") '打印结果为True
End Sub
Sub 倒序()
Dim Array1( To ) As String
Array1() = "Word"
Array1() = "Excel"
Array1() = "Outlook"
Array1() = "Access"
Dim Array2 As Variant
Array2 = MyUDF.Reverse(Array1) '倒序的结果返回给Array2
Debug.Print Join(Array2, "/") '打印结果为Access/Outlook/Excel/Word
MyUDF.ReverseSelf Array1 '直接对Array1进行倒序
Debug.Print Join(Array1, "/") '打印结果为Access/Outlook/Excel/Word
End Sub
Sub 去重()
Dim Array1( To ) As Integer
Array1() =
Array1() =
Array1() =
Array1() =
Array1() =
Dim Array2 As Variant
Array2 = MyUDF.Distinct(Array1)
Debug.Print Join(Array2, "/") '打印结果为22/33/44
End Sub
Sub 连接数组()
Dim Array1( To ) As String
Array1() = "Word"
Array1() = "Excel"
Array1() = "Outlook"
Array1() = "Access"
Dim Array2 As Variant
Array2 = MyUDF.JoinArray(Array1, Array(, , ), Array(True, False))
Debug.Print Join(Array2, "/") '打印结果为Word/Excel/Outlook/Access/1/2/3/True/False
End Sub
Sub 排序()
Dim Array1( To ) As String
Array1() = "Word"
Array1() = "Excel"
Array1() = "Outlook"
Array1() = "Access"
Dim Array2 As Variant
Array2 = MyUDF.Sort(Array1)
Debug.Print Join(Array2, "/") '打印结果为Access/Excel/Outlook/Word
MyUDF.SortSelf Array1 '对Array1自身升序
MyUDF.ReverseSelf Array1 '对Array1自身倒序
Debug.Print Join(Array1, "/") '打印结果为Word/Outlook/Excel/Access
End Sub
Sub 检索元素位置()
Dim Array1( To ) As String
Array1() = "Word"
Array1() = "Excel"
Array1() = "Outlook"
Array1() = "Access"
Array1() = "Excel"
Debug.Print MyUDF.IndexOf(Array1, "Outlook") '结果:4
Debug.Print MyUDF.IndexOf(Array1, "outlook") '结果:-1
Debug.Print MyUDF.LastIndexOf(Array1, "Excel") '结果:6
End Sub
Sub 指定位置插入另一数组()
Dim A( To ) As Integer
A() =
A() =
A() =
A() =
A() =
Dim B(- To -) As String
B(-) = "Word"
B(-) = "Excel"
B(-) = "Outlook"
Dim Array3 As Variant
Array3 = MyUDF.InsertRange(A, , B)
Debug.Print Join(Array3, "/") '打印结果为22/33/Word/Excel/Outlook/22/44/33
End Sub
Sub 删除连续多个元素()
Dim Array1( To ) As String
Array1() = "Word"
Array1() = "Excel"
Array1() = "Outlook"
Array1() = "Access"
Array1() = "Excel"
Dim Array2 As Variant
Array2 = MyUDF.RemoveRange(Array1, , )
Debug.Print Join(Array2, "/") '打印结果为Word/Access/Excel
End Sub
Sub 部分元素构成新数组()
Dim Array1( To ) As String
Array1() = "Word"
Array1() = "Excel"
Array1() = "Outlook"
Array1() = "Access"
Array1() = "Excel"
Dim Array2 As Variant
Array2 = MyUDF.GetRange(Array1, , )
Debug.Print Join(Array2, "/") '打印结果为Excel/Outlook/Access
End Sub
Sub 用另一数组覆盖一部分元素()
Dim Array1( To ) As Integer
Array1() =
Array1() =
Array1() =
Array1() =
Array1() =
Dim Array2() As String
Array2() = "Word"
Array2() = "Excel"
Array2() = "Outlook"
Dim Array3 As Variant
Array3 = MyUDF.SetRange(Array1, , Array2)
Debug.Print Join(Array3, "/") '打印结果为2/Word/Excel/Outlook/6
End Sub

下载地址:UDF.zip

下载后解压缩,根据 使用说明.txt 中的内容执行操作。

注册成功后,可以在VBA添加如下引用:

2019/6/28 新增一个求和函数,可以对任意形式的数组进行数值求和,即使嵌套的数组也可以逐层求出。用法如下:

除了下面列出的实例外,大家如果有其他类型的求和,也可以用该函数试试。

Sub 对多个参数直接求和()
'参数个数不限
Total = MyUDF.Sum(1, 2, 3, "Test", 4)
Debug.Print Total '返回10
End Sub
Sub 对任意数组求和()
Dim AnyArray As Variant
AnyArray = Array(-1, -2, Array(3, 4, 5), 6)
Debug.Print MyUDF.Sum(AnyArray) '返回15
End Sub
Sub 对多个数组求和()
Dim A(1 To 2) As Integer
Dim B(1 To 3) As Single
A(1) = 1: A(2) = 2
B(1) = 1: B(2) = 2: B(3) = 3
Debug.Print MyUDF.Sum(A, B) '返回9
End Sub

面向VBA一维数组的实用自定义函数的更多相关文章

  1. 题目要求:传入数组 内容为[['lisi','男','27'],['wangwu','男',18],['zhaoliu','男','30']],将此二维数组转化为一维数组,创建自定义函数完成

    //自定义函数 function getOne($arr){ $str = ''; //定义空的字符串,用来接收值 foreach ($arr as $key=>$value){ //循环遍历数 ...

  2. VBA 定义能返回数组公式的自定义函数

    返回一个变量大小结果数组的方法 此方法返回基于一个参数范围的值的数组.结果数组的大小具体取决于参数数组中的元素数量波动.例如对于假定您要创建一个范围中的每个值乘以 100 的函数.下面的自定义函数接受 ...

  3. GDAL中RasterIO函数(把文件读取为一个一维数组)和ReadBlock函数(读取栅格数据块)

    CPLErr GDALRasterBand::RasterIO ( GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize, int nYSize, ...

  4. numpy基础教程--将二维数组转换为一维数组

    1.导入相应的包,本系列教程所有的np指的都是numpy这个包 1 # coding = utf-8 2 import numpy as np 3 import random 2.将二维数组转换为一维 ...

  5. PHP实用系统函数之数组篇

    PHP中十分实用的系统函数 array array_merge 说明:array  array_merge ( array $array1 [, array $... ] ) 将一个或多个数组的单元合 ...

  6. VBA Excel 常用 自定义函数

    1. 将 互换 Excel 列号(数字/字母) Public Function excelColumn_numLetter_interchange(numOrLetter) As String Dim ...

  7. PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?

    如题:如何判断一个数组是一维数组或者是二维数组?用什么函数? 判断数量即可 <?php if (count($array) == count($array, 1)) { echo '是一维数组' ...

  8. Excel VBA自定义函数编写(UDF, User-Defined Function)

    虽然知道Microsoft Office Excel可以支持用VB语言来进行复杂的编程和自定义函数的编写,但是一直以来都没有这个需求. 这次遇到的问题是要根据一列数组计算出一个值,但计算过程又比较复杂 ...

  9. [VBA]用一个简单例子说明如何在Excel中自定义函数

    Excel中的函数无疑是强大的,但是再强大的战士也有他脆弱的脚后跟[1].这两天在使用Excel的时候遇到了一个需求,要在某一个单元格里面自动计算今天是星期几(如显示 Today is Tuesday ...

随机推荐

  1. php语言注意点

    PHP大小写问题 http://www.jb51.net/article/38579.htm 推荐大家始终坚持“大小写敏感”,遵循统一的代码规范.1. 变量名区分大小写 2. 函数名.方法名.类名不区 ...

  2. oracle学习笔记(3)

    使用profile文件对口令进行管理 sql>create profile 文件名 limit failed_login_arrempts 3 password_lock_time 2; 将配之 ...

  3. i春秋-web-upload(文件内容读取)(“百度杯”九月场)

    提示很明显,flag在flag.php中,所以,任务就是获取flag.php的内容. 方法一:一句话+菜刀(不再叙述) 方法二:上传脚本,使脚本拥有一定权限,再输出flag 先造一个php脚本 < ...

  4. 翻译SSD论文(Single Shot MultiBox Detector)

    转自http://lib.csdn.net/article/deeplearning/53059 作者:Ai_Smith 本文翻译而来,如有侵权,请联系博主删除.未经博主允许,请勿转载.每晚泡脚,闲来 ...

  5. java笔记5

    1. JUnit 单元测试:方法名任意,但是没有参数列表. 注解: @Test @Ignore @Before @After 2. 泛型 1. 在集合中使用泛型 2. 在通用性较高的代码中使用泛型 1 ...

  6. 查看docker的挂载目录

    docker inspect container_name | grep Mounts -A 20docker inspect container_id | grep Mounts -A 20

  7. 吴裕雄--天生自然MySQL学习笔记:MySQL 连接

    使用mysql二进制方式连接 您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库. 实例 以下是从命令行中连接mysql服务器的简单实例: [root@host]# my ...

  8. UML-GRASP前5种模式

    1.创建者(Creator) 问题:谁创建类A? 答:来自领域模型.设计模型(交互图.类图) 2.信息专家 问题:给对象分配职责的基本原则是什么? 回答:谁具有完成该职责的信息,谁负责该职责. 因为根 ...

  9. Eclipse 配置spring boot pom.xml第1行报错的两种解决办法

    现象 通过spring boot项目导入eclipse后,pom.xml文件的第一行总是报错.这里使用的spring版本是2.1.5,2.1.4以前的版本等其他版本的spring没有这个问题. 解决办 ...

  10. 关于python请求库Selenium安装所遇到的问题

    今天,初次接触python,在网上买了一本关于爬虫的书,因为之前电脑上存在python,所以就对着书直接进行的请求库的安装,安装的时候,主要遇到了下边一个问题,在安装Selenium的时候,出现以下提 ...