跳到主要内容

判断一个单元格区域是否包含在另一个单元格区域中

判断一个单元格区域是否包含在另一个单元格区域中,可以使用 Application.Union 方法或 Application.Intersect 方法。

Application.Union 方法

以下示例利用 Application.Union 方法来判断单元格区域 rng1 是否包含在单元格区域 rng2 中。

Function IncludeRange1(ByVal rng1 As Range, ByVal rng2 As Range) As Boolean
    Dim rngUnion As Range
    Set rngUnion = Application.Union(rng1, rng2)
    If Not rngUnion Is Nothing Then
        If rngUnion.Address = rng2.Address Then
            IncludeRange1 = True
        End If
    End If
    Set rngUnion = Nothing
End Function

自定义函数 IncludeRange1 通过判断单元格区域 rng1 与单元格区域 rng2 的合并区域的地址是否与单元格区域 rng2 的地址一致,来判断单元格区域 rng1 是否包含在单元格区域 rng2 中。如果两个地址一致,则表示单元格区域 rng1 包含在单元格区域 rng2 中,并返回 True,否则该函数返回 False

运行如下测试代码后,将显示结果为 True

Sub test1()
    MsgBox IncludeRange1(Range("B3:D6"), Range("A2:F8"))
End Sub

Application.Intersect 方法

以下示例利用 Application.Intersect 方法来判断单元格区域 rng1 是否包含在单元格区域 rng2 中。

Function IncludeRange2(ByVal rng1 As Range, ByVal rng2 As Range) As Boolean
    Dim rngIntersect As Range
    Set rngIntersect = Application.Intersect(rng1, rng2)
    If Not rngIntersect Is Nothing Then
        If rngIntersect.Address = rng1.Address Then
            IncludeRange2 = True
        End If
    End If
    Set rngIntersect = Nothing
End Function

自定义函数 IncludeRange2 通过判断单元格区域 rng1 与单元格区域 rng2 的交叉区域的地址是否与单元格区域 rng1 的地址一致,来判断单元格区域 rng1 是否包含在单元格区域 rng2 中。如果两个地址一致,则表示单元格区域 rng1 包含在单元格区域 rng2 中,并返回 True,否则该函数返回 False

运行如下测试代码后,将显示结果为 True

Sub test2()
    MsgBox IncludeRange2(Range("C3:D5"), Range("B1:H9"))
End Sub

评论

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