Я хотел бы выбрать диапазон в столбце, пока не будет найдено определенное слово / символ - PullRequest
0 голосов
/ 14 января 2020

Мне нужна помощь в настройке диапазона переменной. По сути, у меня есть столбец с формулой «если». Результаты в формуле возвращают либо «», либо число. Вот что у меня сейчас. При этом выбираются все строки, поскольку он «находит» «» в формуле всего столбца.

Set rngEnd = wkLS.Columns(cLS).Find("").Offset(-1, 0)

Как выбрать только диапазон, содержащий числа, учитывая, что «» будет отображаться только при строка после последней ячейки с номером?

1 Ответ

0 голосов
/ 14 января 2020

Ваш путь или вопрос не так ясен, как я мог видеть ... Предположим, я понял, что вы хотите спросить, попробуйте это, пожалуйста. Код может выглядеть сложнее, чем должен, потому что я не знаю, как объявлена ​​переменная cLS. Если бы это было Long, код был бы проще. Но это может быть строка "A:A" ...

В случае, если вам нужен диапазон от первой строки столбца до первой пустой строки (используя Find):

Set rngEnd = wkLS.Range(wkLS.Columns(cLS).Cells(1, 1).Address, wkLS.Columns(cLS).Find("").Offset(-1, 0).Address)
Debug.Print rngEnd.Address

Если вам нужен диапазон от первой строки столбца до последней пустой строки:

Set rngEnd = wkLS.Range(wkLS.Columns(cLS).Cells(1, 1).Address, wkLS.Cells(wkLS.Cells(wkLS.Rows.count, wkLS.Columns(cLS).Column).End(xlUp).Row, 1).Address)

Если вам нужен прерывистый диапазон, содержащий только не пустые ячейки, до последней пустая строка, но предположим, что такие пустые ячейки существуют, используйте следующий код:

Dim wkLS As Worksheet, rngEnd As Range, cLS As Long
Set wkLS = ActiveSheet: cLS = 1 'for A:A column, change for yours
Dim c As Range, finalRange As Range
Set rngEnd = wkLS.Range(wkLS.Columns(cLS).Cells(1, 1).Address, _
            wkLS.Cells(wkLS.Cells(wkLS.Rows.count, wkLS.Columns(cLS).Column).End(xlUp).Row, 1).Address)
        For Each c In rngEnd.Cells
            If c.Value <> "" Then
                If finalRange Is Nothing Then
                    Set finalRange = c
                Else
                    Set finalRange = Union(finalRange, c)
                End If
            End If
        Next
    Debug.Print finalRange.Cells.count, finalRange.Address
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...