Страницы: 1
RSS
Фильтр для вывода значений всех столбцов при двух и более в условиях для одной колонки значений, объединить фильтрование по трем условиям в один макрос
 
Добрый вечер, уважаемые форумчане. Помогите пожалуйста исправить / усовершенствовать макрос.
Есть файл Otchet.xls (версия Excel 2003)
Нужно с помощью макроса отфильтровать данные в столбце А, оставив только значение 935, 940, 955
Использую макрос:
Код
Sub Sort()
    Range("A1:A3").Select
    Selection.AutoFilter Field:=1, Criteria1:="935"
    Selection.AutoFilter Field:=1, Criteria1:="940"
    Selection.AutoFilter Field:=1, Criteria1:="955"
End Sub
 
Однако при выполнении этого макроса фильтруются значение лишь по 955, а нужно, чтобы вывелись все три значения. Помогите пожалуйста. Заранее благодарен.
 
Запишите рекордером не поочерёдную фильтрацию, а указав сразу несколько критериев. Получится массив.
 
Макрорекордером пробовали записать?
У меня 2010 проверить не могу на 2003. записалось следующее
Код
Sub Макрос7()
ActiveSheet.Range("$A$3:$AI$41").AutoFilter Field:=1, Criteria1:=Array( _
        "935", "940", "955"), Operator:=xlFilterValues
End Sub
Изменено: Leanna - 21.02.2015 19:56:40
Работать надо не 12 часов, а головой.
 
Отбой: в 2003 (сразу не заметил) нет такой возможности. Остаётся перебор циклом и скрытие строк.
 
Leanna спасибо. Не работает  :(
Юрий М Спасибо. Фильтром не могу указать несколько критериев. В 2003 - могу только один критерий выбрать.
 
Цитата
Roman_Sleptsov пишет: а нужно, чтобы вывелись все три значения.
Поищите, было - расширенный фильтр макросом.
ps Вариант - в "Приемах" -http://www.planetaexcel.ru/techniques/2/197/
Изменено: Z - 21.02.2015 20:17:55
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Цитата
Юрий М пишет: В 2003 - могу только один критерий выбрать.
См. #4 - я исправился)
 
Спасибо,Z.
Поискал на форуме и в приемах тут.
Да, есть примеры. И везде расширенный фильтр с фильтрацией данных по двум колонка, а у меня условия для одной колонки три условия :(
Помогите пожалуйста.
 
Вот такой простенький вариант:
Код
Sub Макрос1()
Dim LastRow As Long, i As Long
    Application.ScreenUpdating = False
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Range(Cells(2, 1), Cells(LastRow, 1)).EntireRow.Hidden = True
    For i = 2 To LastRow
        Select Case Cells(i, 1)
        Case 935, 940, 955
            Rows(i).Hidden = False
        End Select
    Next
    Application.ScreenUpdating = True
End Sub

 
 
Юрий М Огромное Вам спасибо. Работает.
 
Минутку... Есть одна тонкость - если будет скрыто последнее значение в столбце, то последняя строка будет определена неверно. Поэтому лучше заменить:
Код

LastRow = Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
 
Страницы: 1
Наверх