Макрос Excel VB — найдите и удалите строку с определенными данными плюс 4 строки над ней

#excel #macros #vba

#excel #макросы #vba

Вопрос:

Я не могу понять, как это сделать!!

Я пытаюсь создать макрос, который будет размещен на панели быстрого доступа, чтобы найти и удалить строку, где столбец P = «Сервис для получения количества заявок 1» плюс 4 строки над ним.

Файл имеет длину в несколько тысяч записей, поэтому мне нужно, чтобы он прошел через весь документ и удалил все 5 строк (основную строку с данными поиска плюс 4 выше).

Надеюсь, вы сможете помочь! 🙂

Комментарии:

1. Вы имеете в виду, что хотите найти в столбце P ячейку, в которой есть Service to Claim Count 1 , а затем удалить эту строку и четыре строки над ней?

2. Да, точно! Пожалуйста, скажите мне, что это возможно! 🙂

Ответ №1:

 Sub delRows()
Dim txtCel As Range
Dim timesFound As Long, i As Long
timesFound = WorksheetFunction.CountIf(Range("P:P"), "Service to Claim Count 1")
For i = 1 To timesFound
    Set txtCel = Columns(16).Find(what:="Service to Claim Count 1")
    txtCel.Offset(-4).Select
    Range(txtCel, txtCel.Offset(-4)).EntireRow.Delete
Next i
End Sub
  

Довольно прямолинейно. Он находит ячейку с текстом, затем удаляет эту строку и четыре над ней.

Комментарии:

1. Да, в столбце P. будет много пустых строк. Каждая «Запись» имеет длину 5 строк. Строка 1 всегда будет числом, строка 2 будет иметь службу для утверждения количества 1, 2, 3, 4 или 5, а строки 3, 4 и 5 всегда будут пустыми.

2. @TimothyGould — Если в строке 2 есть «Служба для получения счета 1», как вы ожидаете удалить предыдущие 4 строки? Или, самое большее, вы хотите удалить предыдущие 4 строки, и если это меньше, так тому и быть?

3. Удалив предыдущие 4 строки и строку, содержащую «Service to Claim Count 1», он приведет ее к предыдущей «записи» и удалит все пустые строки над ней. Приведенный выше макрос работает, но есть ли способ заставить его повторить? Существуют тысячи записей, которые необходимо удалить.

4. @TimothyGould — О, так «Сервис для …» может появляться несколько раз в столбце P? И вы хотите удалить это и предыдущее. четыре строки для каждого вхождения?

5. Да, это именно так!