Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Критерий для фильтра из определенной ячейки, Критерий1 не равно значению ячейки, критерий2 не равно пусто
 
Доброго времени суток, очень нужна ваша помощь.
Имеется файл вот такого типа.
http://s018.radikal.ru/i527/1503/63/4ce6b1041891.png

http://s019.radikal.ru/i622/1503/05/68680c2db427.png
Как видите, в столбике F "№ Скв" три разных повторяющихся значений: 507, 401 и 5. Мне нужно сделать отчеты по каждому № Скв отдельно, убрав два остальных.
Вручную получается так: выделяю столбик F, нажимаю Фильтр, ввожу критерии - Не равно 507 и не равно Пусто (чтобы оставить пустые строки). Дальнейшие действия я уже могу записать в макрос: выделяю (Ctrl+Home, Shift+End, Shift+home), и удаляю. Появляются ошибки типа #ССЫЛКА!, я их благополучно удаляю но суть не в этом.
Мне нужно, чтоб человек вводил в ячейку R4 число, скажем 507, дальше нажимал на кнопку, запускается макрос, макрос фильтрует столбик F по условию: не равно значению ячейки R4 и не равно Пусто. Как это реализовать?
При ручном вводе получается такой код:
Код
End Sub
Sub Ìàêðîñ12()
'
' Ìàêðîñ12 Ìàêðîñ
'

'
    Columns("F:F").Select
    Selection.AutoFilter
    ActiveSheet.Range("$F$1:$F$521").AutoFilter Field:=1, Criteria1:="<>507" _
        , Operator:=xlAnd, Criteria2:="<>"
    Range("A9").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.EntireRow.Delete
    Selection.AutoFilter
    Columns("A:P").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$P$521").AutoFilter Field:=16, Criteria1:= _
        "=#ССЫЛКА!", Operator:=xlOr, Criteria2:="="
    ActiveSheet.Range("$A$1:$P$521").AutoFilter Field:=1, Criteria1:="<>всего*" _
        , Operator:=xlAnd
    Range("A9").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.EntireRow.Delete
    Selection.AutoFilter
    Range("A9").Select
    Cells.Replace What:="+#REF!", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Cells.Replace What:="#REF!+", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
 
Код
Criteria1:="<>"&[R4]
 
Влад, нет слов, я 2 дня толком не спал и не ел, думал, как это сделать, большое спасибо, надеюсь, вам за это зачтется.
 
Можно использовать не ячейку, а InputBox - мне кажется так будет удобнее
 
InputBox как вариант т.ж. можно, я предполагал сделать ячейку в виде списка, через проверку данных,  чтоб человек не ввел отсутствующую в столбике F значение.
Если использовать InputBox, ее надо назначать как переменную и  эту переменную вставлять в критерий фильтра?
 
Примерно так
Код
I = InputBox("Ведите число")
If I = "" Then Exit Functio
Criteria1:="<>"&I

P.S. если я не ошибаюсь, то в выпадающем списке будет отображаться весь столбец, а не его уникальные значения
Изменено: МВТ - 22 Мар 2015 19:29:40 (Добавил постскриптум)
 
Сделал InputBox, все правильно работает, спасибо. Только я сделал не
Цитата
МВТ написал:
If I = "" Then Exit Functio
If I = "" Then Exit Sub
Страницы: 1
Читают тему (гостей: 1)