Установить именованный диапазон на основе результатов поиска Excel VBA - PullRequest
0 голосов
/ 12 апреля 2019

Я очищаю некоторые данные, которые я должен регулярно очищать.Ручной процесс сводит меня с ума.Я хотел бы установить имя диапазона, основываясь на поиске в одном столбце для двух значений.Я использую Excel 2007, если это помогает.

Я прочитал много тем, но не могу найти что-то конкретное.Самым близким потоком был Excel VBA - Создание именованного диапазона на основе найденной ячейки

Например, столбец поиска A и, когда вы найдете слово отдел, задайте его как начало диапазона, затем продолжите поиск в столбце A, и когдаВы найдете слово Medium, которое задает в качестве второй точки диапазона.Таким образом, поиск обнаружил Отдел в A5 и Средний в A24. Теперь я хочу установить этот диапазон («A5: A24») и дать ему имя.Любое имя подойдет Просто нужно посмотреть как это делается?Как только я смогу сделать это, я смогу решить другие задачи, которые я делаю с этими найденными диапазонами, например удалить их, отметить их, скопировать и так далее.Главное - определить их в первом месте.

Я могу выполнить поиск, чтобы найти оба, и выполнил несколько циклов, чтобы сделать то же самое, но я понятия не имею, как установить диапазон на основе этого поискарезультат.

введите описание изображения здесь

1 Ответ

0 голосов
/ 12 апреля 2019

Вот пример того, как создать 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...