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

Вход

Регистрация

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

 

= Мир MS Excel/Как использовать чекбоксы для фильтрации по условию? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как использовать чекбоксы для фильтрации по условию? (Формулы/Formulas)
Как использовать чекбоксы для фильтрации по условию?
RMMMM Дата: Пятница, 07.05.2021, 01:59 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 93
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте,

Нужно фильтровать таблицу по чекбоксам. Если чекбокс T >= 12M отмечен, то нужно показывать только строчки содержащие в столбце "C" 12M или/и 15M или/и 20M. Если чекбокс T < 12M отмечен, то нужно показывать только строчки не содержащие в столбце "C" 12M или/и 15M или/и 20M. При этом на странице содержатся скрытые строки которые трогать не нужно. Можно отметить оба чек бокса, тогда должны быть видны все строчки диапазона C14:C20.

Файл прилагаю, эксель 365
К сообщению приложен файл: Book1.xlsx (12.5 Kb)
 
Ответить
СообщениеЗдравствуйте,

Нужно фильтровать таблицу по чекбоксам. Если чекбокс T >= 12M отмечен, то нужно показывать только строчки содержащие в столбце "C" 12M или/и 15M или/и 20M. Если чекбокс T < 12M отмечен, то нужно показывать только строчки не содержащие в столбце "C" 12M или/и 15M или/и 20M. При этом на странице содержатся скрытые строки которые трогать не нужно. Можно отметить оба чек бокса, тогда должны быть видны все строчки диапазона C14:C20.

Файл прилагаю, эксель 365

Автор - RMMMM
Дата добавления - 07.05.2021 в 01:59
bmv98rus Дата: Пятница, 07.05.2021, 08:22 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Если нужно отфильтровать именно приложенную таблицу, то только макросом, который или скрывает/открывает, или управляет автофильтром
Если нужно выводить результат в другое место, то вариантов масса, от формульных с использованием трюков для старых версий или новых функций новых версий , до макросов.

При этом на странице содержатся скрытые строки которые трогать не нужно.
а вот это требует пояснения ибо если скрыты строки в самой таблице, то останется только VBA.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеЕсли нужно отфильтровать именно приложенную таблицу, то только макросом, который или скрывает/открывает, или управляет автофильтром
Если нужно выводить результат в другое место, то вариантов масса, от формульных с использованием трюков для старых версий или новых функций новых версий , до макросов.

При этом на странице содержатся скрытые строки которые трогать не нужно.
а вот это требует пояснения ибо если скрыты строки в самой таблице, то останется только VBA.

Автор - bmv98rus
Дата добавления - 07.05.2021 в 08:22
RMMMM Дата: Пятница, 07.05.2021, 16:18 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 93
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
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 - Пятница, 07.05.2021, 18:21
 
Ответить
Сообщение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
Дата добавления - 07.05.2021 в 16:18
bmv98rus Дата: Пятница, 07.05.2021, 18:50 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
просто нужно использовать расширенный фильтр, а там уже использовать
Код
=(IFERROR(--RIGHT(SUBSTITUTE(" "&LEFT(C5;FIND("M";C5)-1);" ";REPT(" ";15));15)>=12;)+NOT($A$2))*(IFERROR(--RIGHT(SUBSTITUTE(" "&LEFT(C5;FIND("M";C5)-1);" ";REPT(" ";15));15)<12;)+NOT($C$2))
К сообщению приложен файл: example2368.xlsm (19.3 Kb)


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениепросто нужно использовать расширенный фильтр, а там уже использовать
Код
=(IFERROR(--RIGHT(SUBSTITUTE(" "&LEFT(C5;FIND("M";C5)-1);" ";REPT(" ";15));15)>=12;)+NOT($A$2))*(IFERROR(--RIGHT(SUBSTITUTE(" "&LEFT(C5;FIND("M";C5)-1);" ";REPT(" ";15));15)<12;)+NOT($C$2))

Автор - bmv98rus
Дата добавления - 07.05.2021 в 18:50
RMMMM Дата: Пятница, 07.05.2021, 20:22 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 93
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
bmv98rus, спасибо, это решение насколько я понимаю ищет цифру перед M и сравнивает с 12. А можно ли обойтись без дополнительных ячеек и обойтись только VBA?
И мне достаточно проверки на "*12M*" или "*15M*". Просто не получается проверить на "не" "*12M*" или "не" "*15M*"
И еще если оба чекбокса отметить, то ничего не показывает, а нужно чтобы показывало все.
Еще непонятно почему репутацию нельзя поднять за каждое полезноее сообщение, таймаут.
 
Ответить
Сообщениеbmv98rus, спасибо, это решение насколько я понимаю ищет цифру перед M и сравнивает с 12. А можно ли обойтись без дополнительных ячеек и обойтись только VBA?
И мне достаточно проверки на "*12M*" или "*15M*". Просто не получается проверить на "не" "*12M*" или "не" "*15M*"
И еще если оба чекбокса отметить, то ничего не показывает, а нужно чтобы показывало все.
Еще непонятно почему репутацию нельзя поднять за каждое полезноее сообщение, таймаут.

Автор - RMMMM
Дата добавления - 07.05.2021 в 20:22
bmv98rus Дата: Пятница, 07.05.2021, 20:33 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
[vba]
Код
    ActiveSheet.Range("$A$4:$C$11").AutoFilter Field:=3, Criteria1:="=*12M*", _
        Operator:=xlOr, Criteria2:="=*15M*"
[/vba]


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение[vba]
Код
    ActiveSheet.Range("$A$4:$C$11").AutoFilter Field:=3, Criteria1:="=*12M*", _
        Operator:=xlOr, Criteria2:="=*15M*"
[/vba]

Автор - bmv98rus
Дата добавления - 07.05.2021 в 20:33
RMMMM Дата: Пятница, 07.05.2021, 21:13 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 93
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
bmv98rus, спасибо, эта часть как раз уже есть и работает (через Criteria1:=Array("*12M*", "*15M*")). Как сделать версию "не"?
 
Ответить
Сообщениеbmv98rus, спасибо, эта часть как раз уже есть и работает (через Criteria1:=Array("*12M*", "*15M*")). Как сделать версию "не"?

Автор - RMMMM
Дата добавления - 07.05.2021 в 21:13
bmv98rus Дата: Пятница, 07.05.2021, 21:42 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
[vba]
Код
    ActiveSheet.Range("$A$4:$C$11").AutoFilter Field:=3, Criteria1:="<>*12M*", _
        Operator:=xlAnd, Criteria2:="<>*15M*"
[/vba]


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение[vba]
Код
    ActiveSheet.Range("$A$4:$C$11").AutoFilter Field:=3, Criteria1:="<>*12M*", _
        Operator:=xlAnd, Criteria2:="<>*15M*"
[/vba]

Автор - bmv98rus
Дата добавления - 07.05.2021 в 21:42
RMMMM Дата: Пятница, 07.05.2021, 23:09 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 93
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
bmv98rus, Спасибо, все получилось.
 
Ответить
Сообщениеbmv98rus, Спасибо, все получилось.

Автор - RMMMM
Дата добавления - 07.05.2021 в 23:09
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как использовать чекбоксы для фильтрации по условию? (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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