Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Макрос отображения нескольких критериев автофильтра в отдельную ячейку
 
Добрый день. С помощью созданной функции значение автофильтра отображается в ячейке J3. Но нужно сделать так, чтобы отображались несколько критериев автофильтра в этой ячейке, а не только один как в моём примере. Помогите с макросом пожалуйста.
 
Добрый день!
протяните с ячейки j3 вашу функцию (=GetCriteria(J5)) до A3
 
Ну вот я протянул, поставил фильтр на Иванов и Петров, а в ячейке J3 отображается Иванов. А мне нужно, чтобы было Иванов Петров. Через запятую или пробел не важно
 
Цитата
DARR написал: Помогите с макросом пожалуйста.
А чем стандартный срез не устраивает - через него и выбирать и отображать можно?
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Z, у меня большая таблица будет.. и критериев фильтра будет 2 или 3. Потом печатать. Нужно, чтобы критерии были отображены в отдельной ячейке как в примере..
 
DARR, В своей функции Вы выводите только один критерий - первый (Criteria1).
Полагаю, Вам необходимо организовать цикл, который запишет в переменную столько критериев, сколько у Вас выбрано в автофильтре.
 
alexleoix, полагаю мне нужна помощь с этим)
 
Цитата
alexleoix написал:
Полагаю, Вам необходимо организовать цикл, который запишет в переменную столько критериев
Насколько я знаю в автофильтре всего 2 критерия
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim,
как я понял, там такая хитрость: Если выбираешь два значения , то автофильтр работает с параметрами Criteria1 и Criteria2 и оператором xlOr, а вот если более двух, то используется Array и оператор xlFilterValues
 
Пробуйте:
Код
Function GetCriteria(r As Range)
    Dim v, FilterIndex
    Const delim As String = ", " ' запятая с пробелом - разделитель списка
    On Error Resume Next
    GetCriteria = "Все"
    With r.Worksheet.AutoFilter
        FilterIndex = r.Column - .Range.Column + 1
        v = .Filters(FilterIndex).Criteria1
        If IsArray(v) Then
          v = Join(v, delim)
        Else
          v = v & delim & .Filters(FilterIndex).Criteria2
        End If
        If v <> "" Then GetCriteria = Replace(v, "=", "")
    End With
End Function
Изменено: sokol92 - 3 Дек 2018 15:45:26
Владимир
 
sokol92, спасибо огромное, всё получилось!
Страницы: 1
Читают тему (гостей: 1)
Наверх