Определение диапазона с использованием переменной - PullRequest
0 голосов
/ 07 мая 2020

У меня есть определенные значения в моем столбце A.

Например:

Header
A
A
C
C
D
D
E
F

Я хочу сохранить строки с D и удалить все остальные. В качестве первого шага отсортировали мой лист. Теперь пытаюсь выполнить код ниже, но он дает ошибку

Недействительная или неквалифицированная ссылка

Dim strA As Range
Dim strB As Range

    Range("A:A").Select
    Selection.Find(What:="D", After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate
    ActiveCell.Offset(-1, 0).Select
    Set strA = .ActiveCell


    Range(Selection, Selection.End(xlUp)).Select
    Range(Selection, ActiveCell.Offset(1, 0).Select).Select
    ActiveCell.Offset(1, 0).Select
    Set strB = .ActiveCell

    Range(strA, strB).Select

End Sub

1 Ответ

0 голосов
/ 07 мая 2020

Может быть что-то вроде этого:

Sub test()
n = Application.WorksheetFunction.CountIf(Range("A:A"), "D")
Set c = Range("A:A").Find("D", lookat:=xlWhole)
Range("A" & c.Row, Range("E" & c.Row).Offset(n - 1, 0)).Copy Destination:=Range("A2") 'change E as needed, depends how many column is your data
Set rngDel = Range("A1").Offset(n + 1, 0)
Range(rngDel, rngDel.End(xlDown)).EntireRow.Delete
End Sub

Перед запуском кода таблица данных должна быть сначала отсортирована по столбцу A.
Код подсчитает, сколько «D» находится в столбце A .
Затем он получает ячейку, в которой находит первую букву «D».
Оттуда он копирует все ячейки со значением «D»
, затем вставляет их в ячейку A2
, наконец, удаляет оставшиеся ячейки, у которых нет значения "D"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...