系统:Windows 10
软件:Excel 2010
今日歌曲:
相关文章:
在上次的实例中,有涉及到判断两个点对应特征码是否有相同的部分
其实也就是两个点对应特征码的交集是否为空
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 = 0
'以最小数组循环,减少循环次数
If len1 >= len2 Then
cycle = len2
cycleArray = array2
findArray = array1
Else
cycle = len1
cycleArray = array1
findArray = array2
End If
For i = 0 To cycle Step 1
eachOne = cycleArray(i)
findStatus = Application.Match(eachOne, findArray, 0)
If Not IsError(findStatus) Then
resultLen = resultLen + 1
ReDim Preserve resultArray(1 To resultLen)
resultArray(resultLen) = eachOne
End If
Next
funIntersection = resultArray
End Function
代码截图
Part 3:部分代码解读
ReDim Preserve resultArray(1 To resultLen)改变数组resultArray的大小
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("张三", "李四", 1, 2, 3, 4, 5)
array2 = Array("张三", "王五", 3, 4, 5, 6)
array3 = Array(11, 12)
array4 = Array(1, 2, 3, 4, 5, 6)
array5 = Array(4, 5, 6, 7, 8)
array12 = funIntersection(array1, array2)
array13 = funIntersection(array1, array3)
array45 = funIntersection(array4, array5)
Err.Clear
On Error Resume Next
inersectionCount = UBound(array13)
If Err.Number 0 Then
MsgBox "空数组"
End If
On Error GoTo 0
End Sub
执行结果
代码截图
注:代码中也提供了如何判别是否为空数组的方法
以上为本次的学习内容,下回见
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。