Страницы: 1
RSS
Макросом сделать фильтрацию столбца в таблице по заданным(меняющимся) условиям, Сортировка по настраиваемому фильтру макросом
 
Здравствуйте!
В реале таблица огромная. Нужно постоянно делать фильтр столбца по условию  "числовые фильтры"-"между".
В ячейку "G1" вводится ручками) число, высчитываются меньшее "F1", большее "H1" и на основании этих чисел делать фильтр столбца "B". Больше или равно "F1" и меньше или равно "H1".
Можно этот процесс автоматизировать?
в примере подробно описано.
Изменено: ser987 - 22.04.2018 02:07:17
 
Здравствуйте.
Похожая тема была  тут  Я пользовался когда-то. Может и Вам поможет. Я для себя переделал:
Код
Sub avtofiltr()
    'Dim NonDupes As New Collection
    'Dim li As Long
    'Dim rr As 
    'Dim rr2 As Range
    'On Error GoTo 0
    'Set rr = Application.InputBox(Prompt:="Укажите диапазон1:", _
     '   Title:="Задать диапазон", Type:=8)
    'Set rr2 = Application.InputBox(Prompt:="Укажите диапазон2:", _
     '   Title:="Задать диапазон", Type:=8)
      '   On Error GoTo 0
    Application.ScreenUpdating = False
    If ActiveSheet.AutoFilterMode = True Then 'rr.AutoFilter
    ActiveSheet.UsedRange.AutoFilter Field:=2, Criteria1:=Cells(15, 1).Value
       'On Error GoTo 0
    If ActiveSheet.AutoFilterMode = True Then
    ActiveSheet.UsedRange.AutoFilter Field:=3, Criteria1:=Cells(15, 2).Value
'    On Error GoTo 0
    End If
    End If
Application.ScreenUpdating = True
    'Rows("1:1").AutoFilter
End Sub


Может и Вы сделаете под себя.
Изменено: abduvs77 - 22.04.2018 03:49:17
 
Код
Range("A1:C10").AutoFilter Field:=2, Criteria1:=">=" & Range("F1"), Operator:=xlAnd, _
                                     Criteria2:="<=" & Range("H1")
 
abduvs77, спасибо, но если сравнить с нижним вариантом, то там явно по проще)

Kuzmich, на примере отлично работает, а на рабочей таблице не фильтрует. причём данные фильтра из указанных ячеек вставляет, но результат показывает ноль строк(хотя подходящих значений много). Если после выполнения макроса зайти в фильтр столбца выбрать "между", то там уже стоят нужные значения из ячеек и нажать "Ок", то выводит нужные данные.
Может из-за объёма таблицы не работает?
Код
Range("A2:BQ8755").AutoFilter Field:=31, Criteria1:=">=" & Range("G8760"), Operator:=xlAnd, _
                                     Criteria2:="<=" & Range("I8760")
Изменено: ser987 - 22.04.2018 13:53:03
 
Если три клика не лень делать и макрос - не обязательное требование, то через расширенный фильтр и любые условия которые доступны фантазии.
Изменено: БМВ - 22.04.2018 14:21:29
По вопросам из тем форума, личку не читаю.
 
БМВ, приветствую, не совсем понял что вы написали)). Ручками то я могу фильтровать , но это утомляет) Объясню необходимость автоматизации: около 10000 строк, значения от 1,01 1,02 ....до100. нужно вставлять в фильтр каждый раз значения с запасом -1,5 и +1,5 от значения по которому делается фильтр.
я месяц назад даже не догадывался о существовании "волшебных магических" макросов способных делать это нажатием одной кнопки)
Kuzmich,  сделал как надо, но в рабочей таблице не хочет работать, приходится заходить в фильтр "между" и жать ок ручками после выполнения макроса
Изменено: ser987 - 22.04.2018 14:45:44
 
Цитата
значения от 1,01 1,02 ....до100
Если критерии у вас тоже числа с запятой, то
Код
Range("A1:C10").AutoFilter Field:=2, Criteria1:=">=" & Replace(Range("F1"), ",", "."), Operator:=xlAnd, _
                                     Criteria2:="<=" & Replace(Range("H1"), ",", ".")
 
не фильтром
MSQuery, без VBA.
По вопросам из тем форума, личку не читаю.
 
Kuzmich,супер, всё работает, спасибо.
Посоветуете где можно почитать про все эти команды?
 
Цитата
где можно почитать
На этом сайте посмотрите справа вверху экрана ССЫЛКИ - там много чего интересного,
но для начала ПЕРВЫЕ ШАГИ.
Удачи!
 
Цитата
БМВ написал:
не фильтромMSQuery, без VBA.
к сожалению пока уровень моего ексель - "я нипанимать ".  С макросами ещё что-то понимаю(по крайней мере куда что вставлять и где изменять), спс Kuzmich всё зарешал)
Страницы: 1
Наверх