根据搜索结果Excel VBA设置命名范围

时间:2019-04-12 02:35:47

标签: excel vba variables search range

我正在清理一些我必须定期清理的数据。手动过程让我发疯。 我想基于在单个列中搜索两个值来设置范围名称。如果有帮助,我正在使用Excel 2007。

我读了很多线程,但是找不到任何特定的东西。最接近的线程是Excel VBA-根据找到的单元格创建命名范围

例如,搜索列A,当您找到单词Department时,将其设置为范围的开头,然后继续搜索列A,当您找到单词Medium时,将其设置为范围的第二点。 因此,搜索已将Department定位在A5处,并将Medium定位在A24处,我现在要设置该范围(“ A5:A24”)并为其命名。任何名称都可以做,只需要看看它是怎么做的? 一旦能够做到这一点,我就可以对这些找到的范围进行其他处理,例如删除,标记,复制等。要点是首先定义它们。

我可以进行搜索以找到两者,并且已经执行了一些循环以进行相同的操作,但是我不知道如何根据该搜索结果设置范围。

enter image description here

1 个答案:

答案 0 :(得分:0)

这是一个示例,该示例说明如何使用每个列的行号和相关的列号,从一列中找到的两个单元格中创建一个Range

根据您的用例,可以对其进行修改以处理不同列中的单元格。您可以删除,标记和复制combinedRng,而不必命名。

Sub MakeMyRange()
    Dim departmentRng As Range, mediumRng As Range

    With ActiveSheet.Columns(1)
        Set departmentRng = .Find("Department")
        Set mediumRng = .Find("Medium")
    End With

    If Not departmentRng Is Nothing Then
        If Not mediumRng Is Nothing Then
            Dim combinedRng As Range
            Set combinedRng = Range(Cells(departmentRng.Row, 1), Cells(mediumRng.Row, 1))
        End If
    End If

End Sub

如果您确实需要命名范围,则可以执行以下操作:

combinedRng.Name = "Test"