跳到主要内容

获取两个单元格区域的交叉区域

在 Excel VBA 中,可以使用 Application 对象的 Intersect 方法获取两个或多个单元格区域的交叉区域。

Intersect 方法语法

Application.Intersect (Arg1, Arg2, ...)

Intersect 方法必须指定最少两个参数,最多可以指定30个参数,所有参数均应为 Range 对象。如果区域之间没有交集则返回 Nothing。如果它们相交,返回值则为它们的交叉区域。如果指定了不同工作表中的一个或多个区域,则返回错误。

示例一

以下示例为一个带两个参数类型为 Range 的自定义过程,如果这两个参数引用的单元格区域相交,则返回交叉区域的地址,如果不相交则返回一条信息“不存在交叉区域”。

Sub IntersectRange(rng1 As Range, rng2 As Range)
    Dim rngTarget As Range
    Set rngTarget = Application.Intersect(rng1, rng2)
    If rngTarget Is Nothing Then
        MsgBox "不存在交叉区域。"
    Else
        MsgBox "交叉区域地址为:" & rngTarget.Address
    End If
    Set rngTarget = Nothing
End Sub

使用 Call 语句调用 IntersectRange 过程,来确认两个单元格区域是否相交:

Sub TestIntersect()
    Call IntersectRng(Range("C3:D8"), Range("B5:F6"))
End Sub

示例二

以下示例比较 Worksheet.Range 属性、 Application.Union 方法和 Intersect 方法。

Range("A1:A10").Select                            'Selects cells A1 to A10.
Range(Range("A1"), Range("A10")).Select           'Selects cells A1 to A10.
Range("A1, A10").Select                           'Selects cells A1 and A10.
Union(Range("A1"), Range("A10")).Select           'Selects cells A1 and A10.
Range("A1:A5 A5:A10").Select                      'Selects cell A5.
Intersect(Range("A1:A5"), Range("A5:A10")).Select 'Selects cell A5.

评论

您的电子邮件地址不会显示出来。*号为必填项。