VBA/Excel-实例系列-04-求两个数组的交集
2024-09-01 18:26:22
原创: Z Excel高效办公之VBA 2017-03-10
Part 1:逻辑过程
已有两个数组,要求单个数组中信息无重复
以最短的数组作为循环,分别判断该数组中的元素是否在另一个数组中
如果某一元素在另外一个数组中,则将其保存到结果数组中
Part 2:代码
Function funIntersection(array1, array2)
Rem>>求两个集合的交集
Rem>>要求原数组无重复信息 Dim len1
Dim len2
Dim cycle
Dim cycleArray
Dim findArray
Dim resultArray()
Dim eachOne
Dim i
Dim findStatus
Dim resultLen len1 = UBound(array1)
len2 = UBound(array2) resultLen = '以最小数组循环,减少循环次数
If len1 >= len2 Then
cycle = len2
cycleArray = array2
findArray = array1
Else
cycle = len1
cycleArray = array1
findArray = array2
End If For i = To cycle Step
eachOne = cycleArray(i)
findStatus = Application.Match(eachOne, findArray, )
If Not IsError(findStatus) Then
resultLen = resultLen +
ReDim Preserve resultArray( To resultLen)
resultArray(resultLen) = eachOne
End If Next funIntersection = resultArray
End Function
Part 3:部分代码解读
ReDim Preserve resultArray( To resultLen)改变数组resultArray的大小
同时保存数组已有的信息
数组下标从1开始,数组下标默认从0开始,可以人为修改
Part 4:调用该函数
Sub test()
Rem>>
Rem>>
Dim array1()
Dim array2()
Dim array3()
Dim array4()
Dim array5()
Dim array12()
Dim array13()
Dim array45()
Dim inersectionCount array1 = Array("张三", "李四", , , , , )
array2 = Array("张三", "王五", , , , )
array3 = Array(, )
array4 = Array(, , , , , )
array5 = Array(, , , , ) array12 = funIntersection(array1, array2)
array13 = funIntersection(array1, array3)
array45 = funIntersection(array4, array5) Err.Clear
On Error Resume Next
inersectionCount = UBound(array13)
If Err.Number <> Then
MsgBox "空数组"
End If
On Error GoTo
End Sub
执行结果
最新文章
- 深入理解Linux修改hostname
- ansible 初探nginx安装
- POJ 2942Knights of the Round Table(二分图判定+双连通分量)
- CodeForces 478C Table Decorations
- webpack基础+webpack配置文件常用配置项介绍+webpack-dev-server
- Hibernate中的query.setFirstResult(),query.setMaxResults();
- Android中多线程下载列表的封装实现(含进度反馈)
- 来选择一款适合你网站的CMS建站程序吧
- Drawcli分析
- Python 学习——高阶函数 filter 和 sorted
- Linux - 简明Shell编程10 - 管道(Pipe)
- WPF-TreeView获取文件夹目录、DataGrid获取目录下文件信息
- TPS,并发用户数,吞吐量以及一些计算公式
- MySQL绿色版安装整套流程
- Intellij IDEA注册激活破解
- 【python接口自动化测试教程】00---00章节就代表开篇吧
- dedecms list 添加自定义字段方法
- LATeX 插入脚注
- Django(一)创建和启动项目
- Spark中ml和mllib的区别
热门文章
- esp8266 smartconfig-智能配网分析和使用及注意事项
- Unity入门--实用知识
- [LC]21题 Merge Two Sorted Lists (合并两个有序链表)(链表)
- 【Elasticsearch 7 探索之路】(三)倒排索引
- hdu 1263 水果 (嵌套 map)
- 2019CSP day1t2 括号树
- 编译带libev和libuv的libwebsocket (Win平台)
- ReadWriteLock: 读写锁
- selenium中延时等待三种方式
- 20191031-5 beta week 1/2 Scrum立会报告+燃尽图 03