..
Selection.AutoFilter Field:=1, Criteria1:="Офис"
..
Функция сортировки на VB Excel
Допустим столбец состоит из записей : Офис/Квартира/цех/Офис/Дача/Офис.
С Помощью функции(макроса) по заданному слову "Офис" должны остаться только записи, содержащие этот пункт.
Подскажите. Буду очень Благодарен. Спасибо.
Код:
За разъяснениями - в Help!!
З.Ы.: Научись пользоваться записью макросов - половина вопросов отпадет автоматически!!
То есть через Function ()...End Function задать имя и по нему провести сортировку.
Функцией это будет, если ты все отфильтрованные записи скопируешь на новое место, как результат выполнения функции!!
Если хочешь задавать критерий фильтрации:
Выделяешь ячейку в нужном столбце и с искомым значением. Потом вызываешь процедуру(как - это уже на чо твоя фантазия горазда):
Код:
Public Sub Criteria()
Selection.AutoFilter Field:=1, Criteria1:=Selection.Value
End Sub
Selection.AutoFilter Field:=1, Criteria1:=Selection.Value
End Sub
Разберись с терминологией перед тем, как ее употреблять - сортировка и фильтрация - это две разные вещи!!
Цитата:
Функцией это будет, если ты все отфильтрованные записи скопируешь на новое место, как результат выполнения функции!!
В Принципе то и требуется :) только записи остануться на том же листе, только начиная с первой строки.
Что за задача такая, что ты решил на это пойти.
Разумно все-таки остановиться на предыдущем варианте!
Код:
Sub Macro1()
Dim ifield As Integer
ActiveSheet.AutoFilterMode = False 'выключаем автофильтр
On Error GoTo no_data
Cells(1, ActiveCell.Column).AutoFilter 'включаем автофильтр
On Error GoTo 0
With ActiveSheet.AutoFilter
ifield = ActiveCell.Column - .Range.Column + 1
If ifield < 1 Or ifield > .Range.Columns.Count Then GoTo no_data
.Range.AutoFilter field:=ifield, _
Criteria1:="*" & InputBox("Введите слово для поиска:") & "*"
End With
Exit Sub
no_data:
MsgBox "Нет данных в текущем столбце!"
End Sub
Dim ifield As Integer
ActiveSheet.AutoFilterMode = False 'выключаем автофильтр
On Error GoTo no_data
Cells(1, ActiveCell.Column).AutoFilter 'включаем автофильтр
On Error GoTo 0
With ActiveSheet.AutoFilter
ifield = ActiveCell.Column - .Range.Column + 1
If ifield < 1 Or ifield > .Range.Columns.Count Then GoTo no_data
.Range.AutoFilter field:=ifield, _
Criteria1:="*" & InputBox("Введите слово для поиска:") & "*"
End With
Exit Sub
no_data:
MsgBox "Нет данных в текущем столбце!"
End Sub
Ну а через функции "Function... end function" как можно сделать данную процедурку?