#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. Да, это именно так!