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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос фильтрации нескольких значений в таблице - Мир MS Excel

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

Excel 2010
Здравствуйте Уважаемые форумчане.

Составил макрос для фильтрации нескольких столбцов в таблице на основе данных отдельной ячейки, но он почему-то не работает :(
Фильтрация по идее должна идти по нескольким критериям:
- несколько столбцов с датами (AJ:AK) исходя из их значений. Фильтруем по значению в отдельной ячейке (BA1), которое можно изменить. Отдельное значение в ячейке (BB1) сделал для учёта пустых значение в таблице, которые тоже предполагается выводить в результаты фильтрации.
- третий столбец с номерами учитывается в фильтрации без пустых ячеек, которые не участвуют в отчете.

Полазил по форуму, слепил такой код :)
[vba]
Код

Sub Скругленныйпрямоугольник2_Щелчок()

C1 = "=" & CDbl(Range("BA1"))
C2 = "=" & CDbl(Range("BA2"))

    ActiveSheet.Range("$A$1:$AY$95").AutoFilter Field:=50, Criteria1:=C1, Operator:=xlFilterValues, Criteria2:=C2
    ActiveSheet.Range("$A$1:$AY$95").AutoFilter Field:=51, Criteria1:=C1, Operator:=xlFilterValues, Criteria2:=C2
    ActiveSheet.Range("$A$1:$BE$95").AutoFilter Field:=13, Criteria1:="<>"

End Sub
[/vba]

Подскажите пожалуйста, в чем моя ошибка?
Файл с примером прикладываю.

Спасибо!
К сообщению приложен файл: 5020701.xlsm (26.6 Kb)


Сообщение отредактировал panarik - Воскресенье, 06.05.2018, 20:48
 
Ответить
СообщениеЗдравствуйте Уважаемые форумчане.

Составил макрос для фильтрации нескольких столбцов в таблице на основе данных отдельной ячейки, но он почему-то не работает :(
Фильтрация по идее должна идти по нескольким критериям:
- несколько столбцов с датами (AJ:AK) исходя из их значений. Фильтруем по значению в отдельной ячейке (BA1), которое можно изменить. Отдельное значение в ячейке (BB1) сделал для учёта пустых значение в таблице, которые тоже предполагается выводить в результаты фильтрации.
- третий столбец с номерами учитывается в фильтрации без пустых ячеек, которые не участвуют в отчете.

Полазил по форуму, слепил такой код :)
[vba]
Код

Sub Скругленныйпрямоугольник2_Щелчок()

C1 = "=" & CDbl(Range("BA1"))
C2 = "=" & CDbl(Range("BA2"))

    ActiveSheet.Range("$A$1:$AY$95").AutoFilter Field:=50, Criteria1:=C1, Operator:=xlFilterValues, Criteria2:=C2
    ActiveSheet.Range("$A$1:$AY$95").AutoFilter Field:=51, Criteria1:=C1, Operator:=xlFilterValues, Criteria2:=C2
    ActiveSheet.Range("$A$1:$BE$95").AutoFilter Field:=13, Criteria1:="<>"

End Sub
[/vba]

Подскажите пожалуйста, в чем моя ошибка?
Файл с примером прикладываю.

Спасибо!

Автор - panarik
Дата добавления - 06.05.2018 в 20:42
_Boroda_ Дата: Воскресенье, 06.05.2018, 21:37 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
    z1_ = WorksheetFunction.Text(Range("BA1"), "M/YYYY")
    z2_ = WorksheetFunction.Text(Range("BB1"), "M/YYYY")
    With ActiveSheet.Range("$M$1:$AX$88")
        .AutoFilter Field:=37, Criteria1:=Array(1, z1_), Operator:=xlOr, Criteria2:=Array(1, z2_)
        .AutoFilter Field:=38, Criteria1:=Array(1, z1_), Operator:=xlOr, Criteria2:=Array(1, z2_)
        .AutoFilter Field:=1, Criteria1:="<>"
    End With
[/vba]
К сообщению приложен файл: 5020701_1.xlsm (27.3 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
    z1_ = WorksheetFunction.Text(Range("BA1"), "M/YYYY")
    z2_ = WorksheetFunction.Text(Range("BB1"), "M/YYYY")
    With ActiveSheet.Range("$M$1:$AX$88")
        .AutoFilter Field:=37, Criteria1:=Array(1, z1_), Operator:=xlOr, Criteria2:=Array(1, z2_)
        .AutoFilter Field:=38, Criteria1:=Array(1, z1_), Operator:=xlOr, Criteria2:=Array(1, z2_)
        .AutoFilter Field:=1, Criteria1:="<>"
    End With
[/vba]

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

Excel 2010
Цитата

Так нужно?


Да, работает! :D hands hands
_Boroda_, спасибо большое!
Одно не могу понять, как исправленный тобой макрос видит дату в столбце (AJ) и (AL) в формате DD.MM.YYYY, и сравнивает с ячейкой (BA1), где дата в формате и была изначально M\YYYY.
Код

z1_ = WorksheetFunction.Text(Range("BA1"), "M/YYYY")

код ведь относится к ячейке (BA1). Как же макрос видит дату в столбцах в другом формате? Ранее видел, как приходилось делать отдельный технический столбец со ссылкой на даты но с форматированием в понятную для макроса форму.
 
Ответить
Сообщение
Цитата

Так нужно?


Да, работает! :D hands hands
_Boroda_, спасибо большое!
Одно не могу понять, как исправленный тобой макрос видит дату в столбце (AJ) и (AL) в формате DD.MM.YYYY, и сравнивает с ячейкой (BA1), где дата в формате и была изначально M\YYYY.
Код

z1_ = WorksheetFunction.Text(Range("BA1"), "M/YYYY")

код ведь относится к ячейке (BA1). Как же макрос видит дату в столбцах в другом формате? Ранее видел, как приходилось делать отдельный технический столбец со ссылкой на даты но с форматированием в понятную для макроса форму.

Автор - panarik
Дата добавления - 07.05.2018 в 22:27
_Boroda_ Дата: Вторник, 08.05.2018, 09:18 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Автофильтр дат макросом - довольно дурная штука. Видите там массив Array? Если первый аргумент у него ноль, то это год, 1 - год и месяц, 2 - год-месяц-день


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеАвтофильтр дат макросом - довольно дурная штука. Видите там массив Array? Если первый аргумент у него ноль, то это год, 1 - год и месяц, 2 - год-месяц-день

Автор - _Boroda_
Дата добавления - 08.05.2018 в 09:18
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос фильтрации нескольких значений в таблице (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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