系统: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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注