Я хочу удалить строку в диапазоне (не всю строку) на основе критерия.
Я на 90%, однако форматирование данных несколько сдерживает меня.
Код ниже работает хорошо, он удаляет диапазон («I: Q»), если значение в столбце «I» равно значению в ячейке «E2». Однако в моем диапазоне данных есть пустые строки, которые действуют как разделители и поэтому не могут быть удалены.
В случае, если первая строка пуста, код останавливается и думает, что он завершил свою работу. Когда на самом деле это ничего не сделало.
Sub deleteb2()
Dim FindRng As Range
Dim Rng1 As Range
Dim LastRow As Long
Dim TexttoFind As Integer
Dim TexttoFind1 As String
With Sheets("DN Compile")
TexttoFind = .Range("E2").Value
later
LastRow = .Cells(.Rows.Count, "E").End(xlUp).Row '<-- get last row with
data in Column E
Set Rng1 = .Range("I1:Q" & LastRow)
Set FindRng = Rng1.Find(What:=TexttoFind, LookIn:=xlValues,
LookAt:=xlWhole)
While Not FindRng Is Nothing '<-- find was successful
FindRng.Resize(, 10).delete xlShiftUp '<-- delete column "I:Q" in
found row
Set FindRng = Rng1.Find(What:=TexttoFind, LookIn:=xlValues,
LookAt:=xlWhole)
Wend
End With
End Sub
Я думал как-то добавить оператор IF, который заставил бы код продолжать смотреть, если, например, код видит до 5 последовательных пустых строк, и только тогда он перестанет смотреть дальше.
Код теперь работает - я сделал одну небольшую корректировку, и она, кажется, работает нормально для меня!
Вот что я изменил:
LastRow = .Cells(.Rows.Count, "I").End(xlUp).Row '<-- get last row with data in Column E
Т.е. я изменил последнюю строку строки кода для подсчета столбца I
вместо столбца E
.
Не уверен, стоит ли мне просто удалить вопрос, но подумал, что поскольку код работает, это может быть полезно.