Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Готовые решения

МЕНЮ САЙТА
  • 1
  • 2
  • 3

КАТЕГОРИИ РАЗДЕЛА

ОПРОСЫ
Какой версией Excel Вы пользуетесь?
Всего ответов: 35792
Главная » Готовые решения » VBA » Полезные приёмы

Автофильтр и расширенный фильтр
30.08.2013, 15:08
[ Файл-пример (80.5Kb) ]
как пример, предположим, что нужно разбить таблицу по отдельным листам, используя в качестве критерия уникальные значения из одного столбца
собственно вот код примера:
Sub ertert112()
Dim s$, r
Application.ScreenUpdating = False
With Sheets("Sheet4").Range("A1").CurrentRegion
 .Parent.AutoFilterMode = False
 For Each r In .Offset(1).Resize(.Rows.Count - 1).Columns(4).Value
 If InStr(s, r) = 0 Then
 If Not Evaluate("ISREF('" & r & "'!A1)") Then
 Sheets.Add(after:=Sheets(Sheets.Count)).Name = r
 Else
 Sheets(r).UsedRange.ClearContents
 End If
 .AutoFilter 4, r
 .Copy Sheets(r).Range("A1")
 s = s & r
 End If
 Next
 .AutoFilter
End With: Application.ScreenUpdating = True
End Sub
а это отрывки-заготовки:
Dim s As String, r As Range ' массив в качестве критерия для автофильтра
With New Collection
 On Error Resume Next
 For Each r In ActiveSheet.ListObjects("Table1").DataBodyRange.Columns(2).SpecialCells(12)
 If IsEmpty(.Item(r)) Then .Add r, r: s = s & "~" & r
 Next
End With: On Error GoTo 0
ActiveSheet.ListObjects("Table2").Range.AutoFilter 2, Split(Mid(s, 2), "~"), 7
Dim lo As ListObject: Set lo = ActiveSheet.ListObjects(1)
lo.Range.AutoFilter ' разрешить/отменить автофильтр
'ActiveSheet.AutoFilterMode игнорирует фильтры в Таблицах (ListObject), поэтому:
MsgBox lo.ShowAutoFilter 'есть ли автофильтр в Таблице
lo.Range.AutoFilter Field:=2, Criteria1:="B"
'отобразить все данные, если применен фильтр (FilterMode), если на листе вообще есть автофильтр (AutoFilterMode)
With ActiveSheet
 If .AutoFilterMode Then If .FilterMode Then .ShowAllData
End With

With ActiveSheet 'или сразу так
 If .FilterMode Then .ShowAllData
End With
Добавил: nilem | | Теги: Автофильтр, ВБА, advancedfilter, расширенный фильтр, VBA, autofilter
Просмотров: 10015 | Рейтинг: 0.0/0
Всего комментариев: 1
0   Спам
1    letasm   (15.04.2016 23:35)
   Подскажите, а как сделать автофильтр, основанный на совпадениях 1ого столбца? что-то не выходит совсем(
И чтобы о работал для большего диапазона строк?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!