Довольно часто сталкиваюсь с необходимостью фильтра столбца таблицы по нескольким критериям. В сети нашел макрос, который преобразует выделенный диапазон ячеек в критерии для фильтра.
[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
Прошу помочь с добавлением следующего функционала:
Возможность выбора в качестве критерия фильтра диапазона на другом листе (название листа с фильтром всегда одно и то же. Допустим, "Расчет". Лист для выбора диапазона - ActiveSheet)
Возможность выбрать колонку для фильтрации (например, через inputbox).
Добрый день!
Довольно часто сталкиваюсь с необходимостью фильтра столбца таблицы по нескольким критериям. В сети нашел макрос, который преобразует выделенный диапазон ячеек в критерии для фильтра.
[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
Прошу помочь с добавлением следующего функционала:
Возможность выбора в качестве критерия фильтра диапазона на другом листе (название листа с фильтром всегда одно и то же. Допустим, "Расчет". Лист для выбора диапазона - ActiveSheet)
Возможность выбрать колонку для фильтрации (например, через inputbox).
Макрос нашел другой, вернее слепил его из нескольких, т.к. 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]
Макрос нашел другой, вернее слепил его из нескольких, т.к. 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
Спасибо за ответ. Не совсем подходит, т.к. таблица на которой буду применять макрос состоит из ~ 35000 строк и 25 столбцов и отфильтрована примерно по 5-7 столбцам. Нужно будет дописывать обратную фильтрацию после снятия, а так как таблица большая срабатывать все будет очень медленно.
Спасибо за ответ. Не совсем подходит, т.к. таблица на которой буду применять макрос состоит из ~ 35000 строк и 25 столбцов и отфильтрована примерно по 5-7 столбцам. Нужно будет дописывать обратную фильтрацию после снятия, а так как таблица большая срабатывать все будет очень медленно.neqkeet