原创: 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

执行结果

VBA/Excel-实例系列-04-求两个数组的交集的更多相关文章

  1. java用最少循环求两个数组的交集、差集、并集

    import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List ...

  2. java使用bitmap求两个数组的交集

    一般来说int代表一个数字,但是如果利用每一个位 ,则可以表示32个数字 ,在数据量极大的情况下可以显著的减轻内存的负担.我们就以int为例构造一个bitmap,并使用其来解决一个简单的问题:求两个数 ...

  3. leetcode-350-Intersection of Two Arrays II(求两个数组的交集)

    题目描述: Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, ...

  4. (C#) 求两个数组的交集

    基本上在面试的时候,会具体到两个int数组,或string数组.具体也就是讨论算法. 首先需要的是和面试的人确认题目的含义,并非直接答题. 然后,可以提出自己的想法,首先最快的是用linq { Lis ...

  5. js求两个数组的交集|并集|差集|去重

    let a = [1,2,3], b= [2, 4, 5]; 1.差集 (a-b 差集:属于a但不属于b的集合)  a-b = [1,3] (b-a 差集:属于b但不属于a的集合)  b-a = [4 ...

  6. 用lua求两个数组的交集、并集和补集。

    -- 克隆 function Clone(object) local lookup_table = { } local function _copy(object) if type(object) ~ ...

  7. 求两个集合的交集和并集C#

    我是用hashset<T>来实现的 具体如代码所示 using System; using System.Collections.Generic; using System.Linq; u ...

  8. js取两个数组的交集|差集|并集|补集|去重示例代码

    http://www.jb51.net/article/40385.htm 代码如下: /** * each是一个集合迭代函数,它接受一个函数作为参数和一组可选的参数 * 这个迭代函数依次将集合的每一 ...

  9. LeetCode初级算法之数组:350 两个数组的交集 II

    两个数组的交集 II 题目地址:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/ 给定两个数组,编写一个函数来计算它们的交 ...

随机推荐

  1. Ansibile之playbook初识

    一.playbook简介 ansiblie的任务配置文件被称为playbook,俗称“剧本”,每一个剧本(playbook)中都包含了一系列的任务,这每个任务在ansible中又被称为“戏剧”(pla ...

  2. 装上linux后的准备工作

    A.修改对应网卡的IP地址的配置文件  1 2 3 4 5 6 7 8 # vi /etc/sysconfig/network-scripts/ifcfg-eth0   IPV6INIT=no #关闭 ...

  3. C++对象模型结论

    C++对象模型 1.C++对象模型探讨的是对象成员存储问题. 2.结论: (1) .类内部的函数(静态成员函数,非静态成员函数)都不在对象内部 ,不占用对象大小. (2) 类内部的静态变量不占用对象大 ...

  4. django学习与实践

    Django简介 ​ Django是一个由Python写成的开放源代码的Web应用框架,它最初是被用来开发管理劳伦斯出版集团旗下的一些以新闻内容为主的网站,即CMS(内容管理系统)软件. 并于2005 ...

  5. 性能监视器PerfMon v2.0 是一个流氓的汉化版

    最近在部署一台新设备时,由于懒得翻墙用google下载软件,由一次中了坑.百度搜索出来的这个<性能监视器 v2.0 汉化版>,安装了之后,设备会时不时自动弹出广告.反编译分析了一下,的确就 ...

  6. js-程序结构

    程序结构: 1.顺序结构(主体结构):自上而下,逐行实行: 2.分支(选择)结构:if语句,if…else, if…else if…else,switch;     3.循环结构:重复某些代码: 分支 ...

  7. SpringBoot学习(三)—— springboot快速整合swagger文档

    目录 MyBatis 简介 引入mybatis组件 代码实战 MyBatis @ 简介 优点 最大的优点是SQL语句灵活,适合调优情景,业务复杂情景 劣势 最大的劣势是不同数据库之间的迁移 引入myb ...

  8. nginx配置路径问题

    编译了一个程序放在服务器上,通过nginx配置转发访问.例如在配置下图的地址 d:\wayne\nginxWeb\www: 发现无法正常运行,查看error.log发现是有问题的,当创建文件时,ngi ...

  9. python_day03

    今日所学内容 1.函数部分: #函数的三种定义方式#1.无参函数:不需要外部传入的参数#2.有参函数:需要接受外部传入的参数#3.空函数:def func(): pass#pass代表说明都不用做# ...

  10. beta week 1/2 Scrum立会报告+燃尽图 02

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9912 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 韩昊 ...