Здравствуйте, Подскажите можно ли по условию удалять сгруппированные диапазоны? Условие такое: если ни в одной из строк сгруппированного диапазона нет определенного диапазона дат - удалять весь диапазон.
Например есть 3 диапазона (те что минусиком сворачиваем) строк:
И мы хотим убрать весь диапазон если в нем нету от 20130801 до 20130806 - должно остаться только 2 диапазона.
Для решения надо пронумеровать все диапазоны, так чтобы по признаку пустой строки в столбце А начинался бы следующий диапазон.
Сделать поиск во всех диапазонах. Удалить номера диапазонов в которых нет искомых значений (в данном случае дат)
Sub test()
Dim cell As Range: Set cell = Range("qwer").Find(5, , xlValues)
If Not cell Is Nothing Then MsgBox "Число 5 найдено в ячейке " & cell.Address
End Sub
В моем случае это сгруппированные диапазоны, как после найденной пустой ячейки, скопировать адрес начала сгруппированного диапазона, а затем адрес конца сгруппированного диапазона?
Далее планирую использовать этот вот макрос удаления строк по условию:
Код
Sub УдалениеСтрокПоНесколькимУсловиям()
Dim ra As Range, delra As Range
Application.ScreenUpdating = False ' отключаем обновление экрана
' ищем и удаляем строки, содержащие заданный текст
' (можно указать сколько угодно значений, и использовать подстановочные знаки)
УдалятьСтрокиСТекстом = Array("Наименование *", "Количество", _
"текст?", "цен*сти", "*78*")
' перебираем все строки в используемом диапазоне листа
For Each ra In ActiveSheet.UsedRange.Rows
' перебираем все фразы в массиве
For Each word In УдалятьСтрокиСТекстом
' если в очередной строке листа найден искомый текст
If Not ra.Find(word, , xlValues, xlPart) Is Nothing Then
' добавляем строку в диапазон для удаления
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
End If
Next word
Next
' если подходящие строки найдены, то: (оставьте одну из 2 следующих строк)
If Not delra Is Nothing Then delra.EntireRow.Hidden = True ' скрываем их
If Not delra Is Nothing Then delra.EntireRow.Delete ' удаляем их
End Sub