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

Вход

Регистрация

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

 

= Мир MS Excel/Фильтр по первой букве прямо на листе - Мир MS Excel

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

Excel 2010
Доброго времени суток, подскажите, пожалуйста, можно ли сделать фильтр прямо на листе, но не по полному названию, а по первой букве, например, я набираю в textbox "ко" и остаются результаты "корова" и "кошка"?
К сообщению приложен файл: 00.xls (36.0 Kb)
 
Ответить
СообщениеДоброго времени суток, подскажите, пожалуйста, можно ли сделать фильтр прямо на листе, но не по полному названию, а по первой букве, например, я набираю в textbox "ко" и остаются результаты "корова" и "кошка"?

Автор - skyfors
Дата добавления - 04.03.2017 в 14:22
Manyasha Дата: Суббота, 04.03.2017, 16:01 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
skyfors, здравствуйте, а этот пример не смотрели?
http://www.planetaexcel.ru/techniques/2/197/


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеskyfors, здравствуйте, а этот пример не смотрели?
http://www.planetaexcel.ru/techniques/2/197/

Автор - Manyasha
Дата добавления - 04.03.2017 в 16:01
RAN Дата: Суббота, 04.03.2017, 19:07 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Manyasha, зачем так сложно? :)
[vba]
Код
Private Sub TextBox2_Change()
    Me.AutoFilter.Range.AutoFilter Field:=2, Criteria1:="=*" & TextBox2.Text & "*", _
                    Operator:=xlAnd
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеManyasha, зачем так сложно? :)
[vba]
Код
Private Sub TextBox2_Change()
    Me.AutoFilter.Range.AutoFilter Field:=2, Criteria1:="=*" & TextBox2.Text & "*", _
                    Operator:=xlAnd
End Sub
[/vba]

Автор - RAN
Дата добавления - 04.03.2017 в 19:07
skyfors Дата: Суббота, 04.03.2017, 23:34 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Manyasha, спасибо, но больше понравился вариант пользователя RAN.
RAN, супер, спасибо, только можно, пожалуйста, исправить, чтобы он реагировал на столбы, где только цифры?
 
Ответить
СообщениеManyasha, спасибо, но больше понравился вариант пользователя RAN.
RAN, супер, спасибо, только можно, пожалуйста, исправить, чтобы он реагировал на столбы, где только цифры?

Автор - skyfors
Дата добавления - 04.03.2017 в 23:34
RAN Дата: Воскресенье, 05.03.2017, 10:23 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Числовой фильтр по критерию "начинается с" ;)
[vba]
Код
Private Sub TextBox1_Change()
    Dim arr, i&
    If Len(TextBox1.Text) Then
        arr = Me.AutoFilter.Range.Columns(1).Value
        With CreateObject("Scripting.Dictionary")
            For i = LBound(arr) To UBound(arr)
                If CStr(arr(i, 1)) Like TextBox1.Text & "*" Then
                    .Item(arr(i, 1)) = CStr(arr(i, 1))
                End If
            Next
            If .Count Then
                Me.AutoFilter.Range.AutoFilter Field:=1, Criteria1:=.items, _
                    Operator:=xlFilterValues
            Else
                Me.AutoFilter.Range.AutoFilter Field:=1
            End If
        End With
    Else
        Me.AutoFilter.Range.AutoFilter Field:=1
    End If
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЧисловой фильтр по критерию "начинается с" ;)
[vba]
Код
Private Sub TextBox1_Change()
    Dim arr, i&
    If Len(TextBox1.Text) Then
        arr = Me.AutoFilter.Range.Columns(1).Value
        With CreateObject("Scripting.Dictionary")
            For i = LBound(arr) To UBound(arr)
                If CStr(arr(i, 1)) Like TextBox1.Text & "*" Then
                    .Item(arr(i, 1)) = CStr(arr(i, 1))
                End If
            Next
            If .Count Then
                Me.AutoFilter.Range.AutoFilter Field:=1, Criteria1:=.items, _
                    Operator:=xlFilterValues
            Else
                Me.AutoFilter.Range.AutoFilter Field:=1
            End If
        End With
    Else
        Me.AutoFilter.Range.AutoFilter Field:=1
    End If
End Sub
[/vba]

Автор - RAN
Дата добавления - 05.03.2017 в 10:23
skyfors Дата: Воскресенье, 05.03.2017, 15:57 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
RAN, спасибо большое, работает без проблем
 
Ответить
СообщениеRAN, спасибо большое, работает без проблем

Автор - skyfors
Дата добавления - 05.03.2017 в 15:57
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Фильтр по первой букве прямо на листе (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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