ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用VBA求出两个不连续区域的差集

如何用VBA求出两个不连续区域的差集

作者:绿色风 分类: 时间:2022-08-17 浏览:175
楼主
芐雨
Q:如何用VBA求出两个不连续区域的差集
A:可以用循环把两个区域的地址找出来,再合并区域

昨天发了一贴,讲解了集合的差集,交集,并集,不明白这些概念可以再看下面的链接

如何用VBA求出两个区域的差集,交集,并集

(出处: Excel 技巧网)

上次的代码只限于两个连续的区域,这次换了另一种思路,可以求出两个不连续的区域的差集




  1. Sub 两个不连续区域的差集_芐雨()
  2.     Dim d
  3.     Dim A As Range, B As Range, rng As Range, Arg As Range, arr As Range
  4.     Dim x As Integer
  5.     Set d = CreateObject("scripting.dictionary")
  6.     On Error Resume Next
  7.     ActiveSheet.Cells.Clear

  8.     Set A = Application.InputBox("请选择区域,按住ctrl可选择多个不连续的区域", Type:=8)                '选定集合A,填充颜色
  9.     A.Interior.ColorIndex = 38
  10.     Set B = Application.InputBox("请选择区域,按住ctrl可选择多个不连续的区域", Type:=8)                '选定集合B,填充颜色
  11.     B.Interior.ColorIndex = 45
  12.     Set Arg = Application.Intersect(A, B)                            'A与B的交集Arg

  13.     For Each rng In Arg                                       '循环交集Arg的单元格
  14.         d.Add rng.Address, ""                                 '把每个单元格的地址放入字典D中
  15.     Next

  16.     For Each rng In A                                          '循环集合A的单元格
  17.         If Not d.exists(rng.Address) Then                      '集合A的地址不存在于字典D中,执行下面
  18.             If arr Is Nothing Then Set arr = rng               '防止arr为空时,union出错
  19.             Set arr = Union(arr, rng)                          '合并集合(区域)
  20.         End If
  21.     Next
  22.     If arr Is Nothing Then                                     'arr为空,无差集
  23.         MsgBox "无差集"
  24.     Else
  25.         arr.Borders.ColorIndex = 1                             '加上边框
  26.         MsgBox arr.Address
  27.     End If
  28. End Sub
2楼
海洋之星
谢谢分享,请规范帖子以便移到相关技术文章区
3楼
水星钓鱼
感谢分享

免责声明

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

评论列表
sitemap