ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何利用字典编写求两个数组的交集、并集和差集的函数?

如何利用字典编写求两个数组的交集、并集和差集的函数?

作者:绿色风 分类: 时间:2022-08-17 浏览:137
楼主
amulee
Q:如何利用字典编写求两个数组的交集、并集和差集的函数?
A:参考以下代码:
1、求交集
  1. Function JiaoJi(ByVal Arr1, ByVal Arr2) '½»¼¯
  2.     Dim d, d1, Temp
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     Set d1 = CreateObject("Scripting.Dictionary")
  5.     For Each Temp In Arr1
  6.         d1(Temp) = 1
  7.     Next
  8.     For Each Temp In Arr2
  9.         If d1.exists(Temp) Then d(Temp) = 1
  10.     Next
  11.     JiaoJi = d.keys
  12. End Function
2、求并集
  1. Function BingJi(ByVal Arr1, ByVal Arr2) '²¢¼¯
  2.     Dim d, Temp
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     For Each Temp In Arr1
  5.         d(Temp) = 1
  6.     Next
  7.     For Each Temp In Arr2
  8.         d(Temp) = 1
  9.     Next
  10.     BingJi = d.keys
  11. End Function
3、求差集。所谓Arr1和Arr2差集,就是属于Arr1却不属于Arr2的数据集合:
  1. Function ChaJi(ByVal Arr1, ByVal Arr2) 'Arr1与Arr2差集。属于Arr1却不属于Arr2的集合
  2.     Dim d, d1, Temp
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     Set d1 = CreateObject("Scripting.Dictionary")
  5.     For Each Temp In Arr2
  6.         d1(Temp) = 1
  7.     Next
  8.     For Each Temp In Arr1
  9.         If Not d1.exists(Temp) Then d(Temp) = 1
  10.     Next
  11.     ChaJi = d.keys
  12. End Function



利用字典来求两个数组的交集、并集和差集.rar
2楼
liuguansky

都可以用REMOVE方法的吧。

比如交集:

  1. Function JiaoJi(ByVal Arr1, ByVal Arr2) '½»¼¯
  2.     Dim d, d1, Temp
  3.     Set d1 = CreateObject("Scripting.Dictionary")
  4.     For Each Temp In Arr1
  5.         d1(Temp) = 1
  6.     Next
  7.     For Each Temp In Arr2
  8.         If not d1.exists(Temp) Then d1.remove temp
  9.     Next
  10.     JiaoJi = d1.keys
  11. End Function
3楼
goshin01
xue xi aaaaaaaa
4楼
我的1314
謝謝提供學習下載中
5楼
qq270850428
老师,如果我要想找5个数组间的相互关系呢,也就是他们的交集,并集,差集。
我现在的问题是想找到这个5个数组间全部数据去掉重复项的数据,这如何实现呢,是不是可以用字典来编写呢
6楼
only0u
学到一手,非常好!
7楼
顽童
Remove好,少定义个字典
8楼
jm9999
非常好!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap