Нужно фильтровать таблицу по чекбоксам. Если чекбокс T >= 12M отмечен, то нужно показывать только строчки содержащие в столбце "C" 12M или/и 15M или/и 20M. Если чекбокс T < 12M отмечен, то нужно показывать только строчки не содержащие в столбце "C" 12M или/и 15M или/и 20M. При этом на странице содержатся скрытые строки которые трогать не нужно. Можно отметить оба чек бокса, тогда должны быть видны все строчки диапазона C14:C20.
Файл прилагаю, эксель 365
Здравствуйте,
Нужно фильтровать таблицу по чекбоксам. Если чекбокс T >= 12M отмечен, то нужно показывать только строчки содержащие в столбце "C" 12M или/и 15M или/и 20M. Если чекбокс T < 12M отмечен, то нужно показывать только строчки не содержащие в столбце "C" 12M или/и 15M или/и 20M. При этом на странице содержатся скрытые строки которые трогать не нужно. Можно отметить оба чек бокса, тогда должны быть видны все строчки диапазона C14:C20.
Если нужно отфильтровать именно приложенную таблицу, то только макросом, который или скрывает/открывает, или управляет автофильтром Если нужно выводить результат в другое место, то вариантов масса, от формульных с использованием трюков для старых версий или новых функций новых версий , до макросов.
При этом на странице содержатся скрытые строки которые трогать не нужно.
а вот это требует пояснения ибо если скрыты строки в самой таблице, то останется только VBA.
Если нужно отфильтровать именно приложенную таблицу, то только макросом, который или скрывает/открывает, или управляет автофильтром Если нужно выводить результат в другое место, то вариантов масса, от формульных с использованием трюков для старых версий или новых функций новых версий , до макросов.
bmv98rus, нужно отфильтровать приложеную таблицу. Скрытые строки есть только выше и ниже самих данных, внутри скрытых нет и они должны скрываться только по чекбоксам. Насколько я понимаю чекбокс должен быть не из Form Control а из ActiveX? Что бы фильтровать по первому чекбоксу следующий код работает Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then Sheet1.Range("A14:С20").AutoFilter Field:=3, _ Criteria1:=Array("*12M*", "*15M*"), _ Operator:=xlFilterValues
End Sub
Но проблема в том что непонятно как отработать все варианты, первый чек бокс отмечен (показывает по фильтру 12 и 15), отмечен второй (показывает по фильтру не 12 и не 15, как "не" сделать?), и третий вариант, когда оба чекбокса отмечены, как показывать все? когда оба не отмечены ничего... И еще почему то в Array воспринимается только 2 параметра, когда добавляю 3й он перестает работать
bmv98rus, нужно отфильтровать приложеную таблицу. Скрытые строки есть только выше и ниже самих данных, внутри скрытых нет и они должны скрываться только по чекбоксам. Насколько я понимаю чекбокс должен быть не из Form Control а из ActiveX? Что бы фильтровать по первому чекбоксу следующий код работает Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then Sheet1.Range("A14:С20").AutoFilter Field:=3, _ Criteria1:=Array("*12M*", "*15M*"), _ Operator:=xlFilterValues
End Sub
Но проблема в том что непонятно как отработать все варианты, первый чек бокс отмечен (показывает по фильтру 12 и 15), отмечен второй (показывает по фильтру не 12 и не 15, как "не" сделать?), и третий вариант, когда оба чекбокса отмечены, как показывать все? когда оба не отмечены ничего... И еще почему то в Array воспринимается только 2 параметра, когда добавляю 3й он перестает работатьRMMMM
Сообщение отредактировал RMMMM - Пятница, 07.05.2021, 18:21
bmv98rus, спасибо, это решение насколько я понимаю ищет цифру перед M и сравнивает с 12. А можно ли обойтись без дополнительных ячеек и обойтись только VBA? И мне достаточно проверки на "*12M*" или "*15M*". Просто не получается проверить на "не" "*12M*" или "не" "*15M*" И еще если оба чекбокса отметить, то ничего не показывает, а нужно чтобы показывало все. Еще непонятно почему репутацию нельзя поднять за каждое полезноее сообщение, таймаут.
bmv98rus, спасибо, это решение насколько я понимаю ищет цифру перед M и сравнивает с 12. А можно ли обойтись без дополнительных ячеек и обойтись только VBA? И мне достаточно проверки на "*12M*" или "*15M*". Просто не получается проверить на "не" "*12M*" или "не" "*15M*" И еще если оба чекбокса отметить, то ничего не показывает, а нужно чтобы показывало все. Еще непонятно почему репутацию нельзя поднять за каждое полезноее сообщение, таймаут.RMMMM