当前位置:首页 > 办公 > Excel教程 > 正文内容

查找重叠的单元格区域——Intersect方法

酷网2周前 (10-09)Excel教程23

如果我们想知道两个单元格区域是否有共同的单元格,或者要知道两个区域中哪些是共有单元格,即两个单元格区域重合的部分,就可以使用Intersect方法。

如下图所示,很容易看出单元格区域A1:C5与B3:E8相重合的区域是B3:C5,也就是红色单元格部分。

下面的代码获取上图中两个单元格区域重合的部分,并赋值给变量rngIntersect,最后显示重合区域的单元格地址。

Sub testIntersect1()

‘声明单元格对象

Dim rngIntersect As Range

‘获取相重合的交叉区域

Set rngIntersect =Intersect(Range(“A1:C5”), Range(“B3:E8”))

MsgBox “A1:C5与B3:E8相重合的区域是:”& rngIntersect.Address

End Sub

Intersect方法的语法

表达式.Intersect(Arg1,Arg2,Arg3,…,Arg30)

说明:

表达式是一个代表Application对象的变量,表明Intersect方法属于Application对象,在Excel中就是指Excel应用本身。因此,通常在代码中可以省略前面的Application限定,直接书写Intersect。例如我们在本文的示例代码中均省略了前面的Application。

必须指定至少两个Range对象作为其参数。

其返回值为Range对象。

我们来看看一些例子,进一步了解Intersect方法及其应用。

示例:判断两个单元格区域是否有重合

下面的例子用来判断一个区域是否包含另一个区域,即一个区域是另一个区域的子区域。代码如下:

Sub testIntersect2()

Dim rng1 As Range, rng2 As Range

Dim rng As Range

‘设置要测试的两个区域

Set rng1 = Range(“A1:D9”)

Set rng2 = Range(“A1:E11”)

‘获取两个区域相重合的区域并存储在变量中

Set rng = Intersect(rng1, rng2)

‘判断两个区域是否存在重合的区域

If Not rng Is Nothing Then

‘判断两个区域之间的包含关系

If rng.Address = rng1.Address Then

MsgBox rng2.Address & “包含”& rng1.Address

Else

MsgBox rng1.Address & “包含”& rng2.Address

End If

Else

MsgBox rng1.Address & “和” &rng2.Address & “区域无重叠.”

End If

End Sub

下图为不同区域的测试结果。(目前,我们还没有学习到与用户交互,所以采用“硬编码”的形式直接设置两个区域rng1和rng2。)

示例:用VBA实现保护单元格功能

下面是一个示例。结合运用Union方法和Intersect方法,禁止用户选择工作表中B1:B5和C6:C10这两块单元格区域,这样就可以防止用户修改这两块区域中的数据。代码如下:

Private SubWorksheet_SelectionChange(ByVal Target As Range)

Dim rngForbidden As Range

‘设置禁止操作的单元格区域

Set rngForbidden =Union(Range(“B1:B5”), Range(“C6:C10”))

‘如果所选择的单元格没有处于禁止操作的单元格区域中,则退出程序

If Intersect(Target, rngForbidden) IsNothing Then Exit Sub

‘选择A1并发出警告

Range(“A1”).Select

MsgBox “不能选择” &rngForbidden.Address & “中的单元格.”, vbCritical

End Sub

每当用户在与包含该事件过程的模块相关联的工作表中选择单元格区域时,就会触发工作表的Worksheet_SelectionChange事件过程。代码中,首先使用Union方法定义了由两个非连续单元格区域组成的禁止操作的区域,然后使用Intersect方法检查所选择的区域与禁止操作的区域是否有重合,并作为If语句的判断条件,如果没有重合则退出事件过程,用户正常操作,并不会感觉到什么;如果有重合,则光标定位到单元格A1并给出一条警告消息。

注:简单地说,工作表事件就是用户操作工作表时,工作表做出的相应响应。关于工作表事件将在以后详细介绍。

扫描二维码推送至手机访问。

版权声明:本文章来源于互联网,由八酷网收集发布,如需转载请注明出处。

本文链接:https://www.i8ku.com/2021/39545.html

分享给朋友:

相关文章

WORKDAY函数计算几个工作日之后的日期

WORKDAY函数计算几个工作日之后的日期

朋友发来一个EXCEL样表,不同金额需交款工作日不同,能不能算出A列金额最后交款日期? 样表如下: 此问题解决的关键是:如何计算规定的工作日之后的日期。 公式实现 第一步: 将不同金额需交款工作日写入E2:F2区域;...

怎么设置excel2007冻结窗口

怎么设置excel2007冻结窗口

  怎么设置excel2007冻结窗口?如何在excel表格中设置冻结某一行或几行窗口,利用Excel工作表的冻结功能可以达到固定窗口的效果?下面小编就为大家介绍下设置excel200...

随机分组太折磨人?巧妙得让我思考了300秒.

随机分组太折磨人?巧妙得让我思考了300秒.

“ 有朋友问了问题,有100个人的姓名,要随机分成10组,每组10人,怎么样能够快速地随机分出来?” 技术不是古板的教条的,灵活使用却依赖于深厚的功底以及对内在逻辑的敏锐洞察。书读百遍其义自见,当然不是随便看看就行。 —...

Excel的正确用法,你以前可能用错了.

Excel的正确用法,你以前可能用错了.

在平时的工作或学习中,你一定遇到过这样的任务: 生成100张邀请函/桌签 生成100个文件夹 修改100个文件名 生成100个参赛选手的编码 在几千条数据中查找匹配的数据并填写 如果你遇到这些任务,需要多长时间完成呢?...

Excel图表中工资条的三种写法,哪个是你需要的?

Excel图表中工资条的三种写法,哪个是你需要的?

问题情境 工资样表如下: 完成后的工资条: 实现方法第一种:编号法 如下动图: 此种方法的好处在于:不需要函数!! 此种方法的缺点在于:适合数据量少的情况。 如果员工增加了,还需要重重新制作工资条。 第二种:简单函...

简单2招帮你快速搞定SUMIFS函数公式中的日期条件!

简单2招帮你快速搞定SUMIFS函数公式中的日期条件!

大家都知道,SUMIFS函数是用来进行多条件求和的,它的基本语法结构为: =SUMIFS(求和区域,条件区域1,条件1,[条件区域2,条件2],…) 如下图表格,我们现在要统计销售一部2019/2/1到2019/3/31...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。