Фильтр с поиском.

Автор Amator, 02 июня 2014, 22:01

Amator

Здравствуйте. Есть код фильтра по цвету ячейки. Но в моем "Excel" возникают проблемы с цветом. В коде нужно изменить вместо поиска цвета на условие если значение в ячейке ">0". Макрос должен двигаться по столбцу AC (29) от ячейки  "АС43" вверх. Если найдет ячейку из значением ">0" (в данном случае "АС18"), тогда от этой ячейки вниз скрыть все строки. Спасибо.

[вложение удалено администратором]

Администратор

Макрос
Sub Фильтр()

    'В константе "lngStartRow" нужно указать порядковый номер
        'Excel-строки, с которой начинаются данные (шапка таблицы не учитываются,
        'только данные учитываются).
    Const lngStartRow As Long = 14
    'В константе "lngStartRow" нужно указать порядковый номер последней Excel-строки.
    Const lngEndRow As Long = 43
   
    Dim arrAC() As Variant
    Dim i As Long
   
    'Взятие данных из Excel в VBA-массив для ускорения работы макроса.
    arrAC() = Range("AC1:AC" & lngEndRow).Value
   
    'Двигаемся по массиву "arrAC" снизу вверх.
    For i = UBound(arrAC, 1) To lngStartRow Step -1
       
        'Если в ячейке число.
        'Нужно делать проверку, иначе может быть ошибка при сравнении
            'данных из ячейки с нулём, если в ячейке будет не число,
            'а что-то другое.
        If IsNumeric(arrAC(i, 1)) = True Then
            'Если число больше нуля.
            If arrAC(i, 1) > 0 Then
                'Проверка, что это не строка 43, т.к.
                    'под стококой 43 ничего скрывать не надо.
                If i = lngEndRow Then
                    'Выход из цикла, т.к. нужно было найти первое попавшееся число > 0.
                    Exit For
                End If
                'Скрытие строк.
                Rows(i + 1 & ":" & lngEndRow).Hidden = True
                'Выход из цикла, т.к. нужно было найти первое попавшееся число > 0.
                Exit For
            End If
        End If
       
    Next i
   
End Sub
[свернуть]

Amator

Спасибо пребольшое.