Доброго времени суток, подскажите, пожалуйста, можно ли сделать фильтр прямо на листе, но не по полному названию, а по первой букве, например, я набираю в textbox "ко" и остаются результаты "корова" и "кошка"?
Доброго времени суток, подскажите, пожалуйста, можно ли сделать фильтр прямо на листе, но не по полному названию, а по первой букве, например, я набираю в textbox "ко" и остаются результаты "корова" и "кошка"?skyfors
Manyasha, спасибо, но больше понравился вариант пользователя RAN. RAN, супер, спасибо, только можно, пожалуйста, исправить, чтобы он реагировал на столбы, где только цифры?
Manyasha, спасибо, но больше понравился вариант пользователя RAN. RAN, супер, спасибо, только можно, пожалуйста, исправить, чтобы он реагировал на столбы, где только цифры?skyfors
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