Страница 1 из 2

Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с листа

Добавлено: 26 май 2009, 18:04
vladyank
Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с листа в Excel?

Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л

Добавлено: 26 май 2009, 18:12
Aent
А чем в коде VBA не устраивает метод .Find ?

Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л

Добавлено: 26 май 2009, 18:40
vladyank
Aent писал(а):А чем в коде VBA не устраивает метод .Find ?
А как это работает? мне надо на листе искать некоторые значения , поиск по содержимому ячейки на листе....

Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л

Добавлено: 26 май 2009, 23:47
Aent
А посмотреть HELP по Range.Find Method ? Там же примеры есть ...
Или
http://www.ozgrid.com/VBA/find-method.htm
В крайнем случае (хотя я не понимаю зачем вам это надо)

Application.WorksheetFunction.Find(arg1,arg2,arg3)
Parameters
Name Required/Optional Data Type Description
- Arg1 Required String The name of the worksheet.
- Arg2 Required String The name of the range.
- Arg3 Optional Variant The name of an argument to refine the search.
Return Value
Double

Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л

Добавлено: 27 май 2009, 09:53
vladyank
Понял, спасибо, буду разбираться :D

Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л

Добавлено: 27 май 2009, 11:38
AlexZZZ
Извиняюсь, если оффтоп, но мне кажется задать вопрос в этой ветке будет уместно.
Давно интересовал вопрос: с точки зрения хорошего стиля программирования, в каких случаях правильнее будет применить метод ".Find", а в каких, воспользоваться циклом?
С маленькими диапазонами всё понятно. Цикл в этом случае сделать проще и работает он практически мгновенно. Интересуют большие диапазоны, заполненные данными. Насколько метод ".Find" выигрывает во времени в этом случае по сравнению с циклом перебора ячеек? В статье, ссылку на которую привёл Aent, сожалеют, что метод поиска применяют гораздо реже, чем цикл. Значит он эффективнее?

Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л

Добавлено: 27 май 2009, 12:15
Aent
AlexZZZ писал(а):Значит он эффективнее?
Практически всегда - да. Вообще, обращение в цикле к большому количеству ячеек - довольно медленный процесс. Когда ячеек несколько (десятков) тысяч тормоза
очень ощутимые просто на выборку очередного значения по .cells(...,...)

Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л

Добавлено: 27 май 2009, 12:21
Tana_L
Я меня тоже вопрос по методу Find. надо найти в 1-ой колонке значения "999", как определить адрес найденной ячейки, т.е. номер строки?

Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л

Добавлено: 27 май 2009, 12:42
AlexZZZ

Код: Выделить всё

Dim iRange As Range
Dim iRow As Long 
Dim iFind As String
iFind = "999" 'Что ищем
    Set iRange = Columns("A:A").Find(What:=iFind)
    If iRange Is Nothing Then
        MsgBox "Ячейка не найдена!"
    Else
        iRow = iRange.Row
        MsgBox "Найденная строка- " & iRow
    End If
А если нужен адрес найденной ячейки, тогда: iRange.Address

Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л

Добавлено: 27 май 2009, 13:11
SAS888
Если одной командой создать массив ячеек, затем в нем искать все, что угодно каким угодно способом, то будет быстрее, чем любой метод, использующий непосредственно ячейки рабочего листа Excel.