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

Вход

Регистрация

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

 

= Мир MS Excel/Автофильтр по выделенному на другом листе диапазону ячеек - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автофильтр по выделенному на другом листе диапазону ячеек (Макросы/Sub)
Автофильтр по выделенному на другом листе диапазону ячеек
neqkeet Дата: Четверг, 17.11.2016, 14:44 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день!

Довольно часто сталкиваюсь с необходимостью фильтра столбца таблицы по нескольким критериям. В сети нашел макрос, который преобразует выделенный диапазон ячеек в критерии для фильтра.

[vba]
Код
Sub test()
Dim StringArray(0, 1 To 3) As String

For c = 1 To 3
StringArray(0, c) = CStr(Selection(c, 1).Value)
Next

Range("A1").AutoFilter Field:=3, Criteria1:=StringArray, Operator:=xlFilterValues

End Sub
[/vba]

Прошу помочь с добавлением следующего функционала:

  • Возможность выбора в качестве критерия фильтра диапазона на другом листе (название листа с фильтром всегда одно и то же. Допустим, "Расчет". Лист для выбора диапазона - ActiveSheet)
  • Возможность выбрать колонку для фильтрации (например, через inputbox).


Сообщение отредактировал neqkeet - Четверг, 17.11.2016, 14:44
 
Ответить
СообщениеДобрый день!

Довольно часто сталкиваюсь с необходимостью фильтра столбца таблицы по нескольким критериям. В сети нашел макрос, который преобразует выделенный диапазон ячеек в критерии для фильтра.

[vba]
Код
Sub test()
Dim StringArray(0, 1 To 3) As String

For c = 1 To 3
StringArray(0, c) = CStr(Selection(c, 1).Value)
Next

Range("A1").AutoFilter Field:=3, Criteria1:=StringArray, Operator:=xlFilterValues

End Sub
[/vba]

Прошу помочь с добавлением следующего функционала:

  • Возможность выбора в качестве критерия фильтра диапазона на другом листе (название листа с фильтром всегда одно и то же. Допустим, "Расчет". Лист для выбора диапазона - ActiveSheet)
  • Возможность выбрать колонку для фильтрации (например, через inputbox).

Автор - neqkeet
Дата добавления - 17.11.2016 в 14:44
neqkeet Дата: Понедельник, 21.11.2016, 21:19 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Макрос нашел другой, вернее слепил его из нескольких, т.к. VBA знаю плохо. Макрос некорректно фильтрует по уже отфильтрованным ячейкам. Поможет кто разобраться? Пример данных прилагаю.

[vba]
Код
Sub FilterMultipleCriteria()
Dim filterRange As Range, filterValues() As Variant, cl As Range, i As Integer

    Set filterRange = Range("A1")
        If Selection.Count > 1 Then
    ReDim filterValues(Selection.SpecialCells(xlCellTypeVisible).Count - 1)
        Else
    ReDim filterValues(Selection.Cells.Count - 1)
    i = 0
    End If
    For Each cl In Selection
    ReDim Preserve filterValues(i)
        filterValues(i) = cl.Text
        i = i + 1
    Next cl

Dim RowNumber As Integer
RowNumber = Val(InputBox("Row Number"))

    filterRange.AutoFilter Field:=RowNumber, Criteria1:=filterValues, Operator:=xlFilterValues
End Sub
[/vba]
К сообщению приложен файл: Sample.xls (80.5 Kb)


Сообщение отредактировал neqkeet - Понедельник, 21.11.2016, 21:19
 
Ответить
СообщениеМакрос нашел другой, вернее слепил его из нескольких, т.к. VBA знаю плохо. Макрос некорректно фильтрует по уже отфильтрованным ячейкам. Поможет кто разобраться? Пример данных прилагаю.

[vba]
Код
Sub FilterMultipleCriteria()
Dim filterRange As Range, filterValues() As Variant, cl As Range, i As Integer

    Set filterRange = Range("A1")
        If Selection.Count > 1 Then
    ReDim filterValues(Selection.SpecialCells(xlCellTypeVisible).Count - 1)
        Else
    ReDim filterValues(Selection.Cells.Count - 1)
    i = 0
    End If
    For Each cl In Selection
    ReDim Preserve filterValues(i)
        filterValues(i) = cl.Text
        i = i + 1
    Next cl

Dim RowNumber As Integer
RowNumber = Val(InputBox("Row Number"))

    filterRange.AutoFilter Field:=RowNumber, Criteria1:=filterValues, Operator:=xlFilterValues
End Sub
[/vba]

Автор - neqkeet
Дата добавления - 21.11.2016 в 21:19
_Boroda_ Дата: Понедельник, 21.11.2016, 21:35 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А если перед установкой фильтра принудительно его снять?
[vba]
Код
    On Error Resume Next
    ActiveSheet.ShowAllData
    On Error GoTo 0
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА если перед установкой фильтра принудительно его снять?
[vba]
Код
    On Error Resume Next
    ActiveSheet.ShowAllData
    On Error GoTo 0
[/vba]

Автор - _Boroda_
Дата добавления - 21.11.2016 в 21:35
neqkeet Дата: Понедельник, 21.11.2016, 22:00 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо за ответ. Не совсем подходит, т.к. таблица на которой буду применять макрос состоит из ~ 35000 строк и 25 столбцов и отфильтрована примерно по 5-7 столбцам. Нужно будет дописывать обратную фильтрацию после снятия, а так как таблица большая срабатывать все будет очень медленно.
 
Ответить
СообщениеСпасибо за ответ. Не совсем подходит, т.к. таблица на которой буду применять макрос состоит из ~ 35000 строк и 25 столбцов и отфильтрована примерно по 5-7 столбцам. Нужно будет дописывать обратную фильтрацию после снятия, а так как таблица большая срабатывать все будет очень медленно.

Автор - neqkeet
Дата добавления - 21.11.2016 в 22:00
KuklP Дата: Понедельник, 21.11.2016, 22:15 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Понедельник, 21.11.2016, 22:17
 
Ответить
СообщениеDel.
Кросс:
http://www.planetaexcel.ru/forum....2%D0%B8

Автор - KuklP
Дата добавления - 21.11.2016 в 22:15
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автофильтр по выделенному на другом листе диапазону ячеек (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!