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

Добавлено: 13 окт 2006, 00:49
Genyaa
Быстрее, компактней и удобней автофильтра, как я думаю, сделать задачу не получится.

Поиск по одному из полей и последующий перебор ячеек в найденном - смертельно медленно.
Если бы можно было обойтись единичной операцией поиска сразу по всем значениям всех полей, то было бы чуть быстрее... но распухание файла для хеш или сцепления полей было здесь отвергнуто.
В екселе нет возможности организовать поиск одновременно по нескольким значениями разных ячеек. Думаю, что этого нет даже в СУБД. Там это решается с помощью индексации группы полей... (что в екселе реализуется сцеплением полей в отдельную колонку и сортировкой по этой колонке) а индексация ведет к тому самому "распуханию" файлов, которое было отвергнуто.
В принципе есть еще Расширенный фильтр - некое подобие SQL запроса к списку... но это тот же фильтр и если нужно именно найти строку (ее расположение в листе), то это будет сделано так же, как и в автофильтре (с той же скроростью)...

Думаю, что других разумных вариантов, которые могли бы претендовать на бОльшие скорость и удобство не остается.

Добавлено: 13 окт 2006, 10:46
namomelkor
Genyaa,
Это все замечательно и работает пока нормально. Но как узнать номер найденой ячейки?

Добавлено: 13 окт 2006, 10:47
sergvk
возможно эта тема ВАС может заинтересовать
forum/viewtopic.php?t=6345 :D

Добавлено: 13 окт 2006, 11:00
namomelkor
sergvk,
Это не совсем не то или даже совсем не то :)

Добавлено: 13 окт 2006, 11:21
Genyaa
namomelkor писал(а):Genyaa,
Это все замечательно и работает пока нормально. Но как узнать номер найденой ячейки?
Можно так сделать (в конце моей процедуры):

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

    MsgBox "Найдено&#58]

Правда, если будет найдено более одной строки, то этот код выдаст адрес только последней найденной строки.

Добавлено: 13 окт 2006, 12:43
Sokl
Цикл можно укоротить. Дополнительное условие выхода - найдено строк <= 1. В определенных случаях поиск ускорятеся.

Добавлено: 13 окт 2006, 12:59
namomelkor
Sokl, это понятно но в моем случае не может буть двух одинаковых строк.

Добавлено: 19 окт 2006, 01:37
Naeel Maqsudov
Коллеги, есть еще тема "поехать на готовом велосипеде".
Я имю в виду SQL запрос к листу через драйвер ODBC.
Тут правда к данным придется добавить первичный ключ
(который и будет указывать результат поска),
например, равный номеру строки.

Есть, ограничение: запрос выполняется в пределах 1 листа.

comprare cialis in italien

Добавлено: 18 окт 2012, 06:37
BrickHaimapam