原创: Z Excel高效办公之VBA 2017-03-10

Part 1:逻辑过程

  1. 已有两个数组,要求单个数组中信息无重复

  2. 以最短的数组作为循环,分别判断该数组中的元素是否在另一个数组中

  3. 如果某一元素在另外一个数组中,则将其保存到结果数组中

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

执行结果

最新文章

  1. 深入理解Linux修改hostname
  2. ansible 初探nginx安装
  3. POJ 2942Knights of the Round Table(二分图判定+双连通分量)
  4. CodeForces 478C Table Decorations
  5. webpack基础+webpack配置文件常用配置项介绍+webpack-dev-server
  6. Hibernate中的query.setFirstResult(),query.setMaxResults();
  7. Android中多线程下载列表的封装实现(含进度反馈)
  8. 来选择一款适合你网站的CMS建站程序吧
  9. Drawcli分析
  10. Python 学习——高阶函数 filter 和 sorted
  11. Linux - 简明Shell编程10 - 管道(Pipe)
  12. WPF-TreeView获取文件夹目录、DataGrid获取目录下文件信息
  13. TPS,并发用户数,吞吐量以及一些计算公式
  14. MySQL绿色版安装整套流程
  15. Intellij IDEA注册激活破解
  16. 【python接口自动化测试教程】00---00章节就代表开篇吧
  17. dedecms list 添加自定义字段方法
  18. LATeX 插入脚注
  19. Django(一)创建和启动项目
  20. Spark中ml和mllib的区别

热门文章

  1. esp8266 smartconfig-智能配网分析和使用及注意事项
  2. Unity入门--实用知识
  3. [LC]21题 Merge Two Sorted Lists (合并两个有序链表)(链表)
  4. 【Elasticsearch 7 探索之路】(三)倒排索引
  5. hdu 1263 水果 (嵌套 map)
  6. 2019CSP day1t2 括号树
  7. 编译带libev和libuv的libwebsocket (Win平台)
  8. ReadWriteLock: 读写锁
  9. selenium中延时等待三种方式
  10. 20191031-5 beta week 1/2 Scrum立会报告+燃尽图 03