Страницы: 1
RSS
Убрать сгруппированные строки по условию, Убрать диапазоны в которых нет дат с... по...
 
Здравствуйте,
Подскажите можно ли по условию удалять сгруппированные диапазоны? Условие такое: если ни в одной из строк сгруппированного диапазона нет определенного диапазона дат - удалять весь диапазон.

Например есть 3 диапазона (те что минусиком сворачиваем) строк:

И мы хотим убрать весь диапазон если в нем нету от 20130801 до 20130806 - должно остаться только 2 диапазона.

  1. Для решения надо пронумеровать все диапазоны, так чтобы по признаку пустой строки в столбце А начинался бы следующий диапазон.
  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
Изменено: Андрей Фетисов - 19.08.2013 17:21:23 (Дополнительные данные для решения задачи.)
Каждое препятствие это новая возможность чему-то научиться.
Страницы: 1
Наверх