Как найти определенную строку.
Модератор: Naeel Maqsudov
Быстрее, компактней и удобней автофильтра, как я думаю, сделать задачу не получится.
Поиск по одному из полей и последующий перебор ячеек в найденном - смертельно медленно.
Если бы можно было обойтись единичной операцией поиска сразу по всем значениям всех полей, то было бы чуть быстрее... но распухание файла для хеш или сцепления полей было здесь отвергнуто.
В екселе нет возможности организовать поиск одновременно по нескольким значениями разных ячеек. Думаю, что этого нет даже в СУБД. Там это решается с помощью индексации группы полей... (что в екселе реализуется сцеплением полей в отдельную колонку и сортировкой по этой колонке) а индексация ведет к тому самому "распуханию" файлов, которое было отвергнуто.
В принципе есть еще Расширенный фильтр - некое подобие SQL запроса к списку... но это тот же фильтр и если нужно именно найти строку (ее расположение в листе), то это будет сделано так же, как и в автофильтре (с той же скроростью)...
Думаю, что других разумных вариантов, которые могли бы претендовать на бОльшие скорость и удобство не остается.
Поиск по одному из полей и последующий перебор ячеек в найденном - смертельно медленно.
Если бы можно было обойтись единичной операцией поиска сразу по всем значениям всех полей, то было бы чуть быстрее... но распухание файла для хеш или сцепления полей было здесь отвергнуто.
В екселе нет возможности организовать поиск одновременно по нескольким значениями разных ячеек. Думаю, что этого нет даже в СУБД. Там это решается с помощью индексации группы полей... (что в екселе реализуется сцеплением полей в отдельную колонку и сортировкой по этой колонке) а индексация ведет к тому самому "распуханию" файлов, которое было отвергнуто.
В принципе есть еще Расширенный фильтр - некое подобие SQL запроса к списку... но это тот же фильтр и если нужно именно найти строку (ее расположение в листе), то это будет сделано так же, как и в автофильтре (с той же скроростью)...
Думаю, что других разумных вариантов, которые могли бы претендовать на бОльшие скорость и удобство не остается.
Всякое решение плодит новые проблемы.
-
- Сообщения: 230
- Зарегистрирован: 31 авг 2006, 13:11
Genyaa,
Это все замечательно и работает пока нормально. Но как узнать номер найденой ячейки?
Это все замечательно и работает пока нормально. Но как узнать номер найденой ячейки?
-
- Сообщения: 230
- Зарегистрирован: 31 авг 2006, 13:11
sergvk,
Это не совсем не то или даже совсем не то
Это не совсем не то или даже совсем не то

Можно так сделать (в конце моей процедуры):namomelkor писал(а):Genyaa,
Это все замечательно и работает пока нормально. Но как узнать номер найденой ячейки?
Код: Выделить всё
MsgBox "Найдено:]
Правда, если будет найдено более одной строки, то этот код выдаст адрес только последней найденной строки.
Всякое решение плодит новые проблемы.
Цикл можно укоротить. Дополнительное условие выхода - найдено строк <= 1. В определенных случаях поиск ускорятеся.
-
- Сообщения: 230
- Зарегистрирован: 31 авг 2006, 13:11
Sokl, это понятно но в моем случае не может буть двух одинаковых строк.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Коллеги, есть еще тема "поехать на готовом велосипеде".
Я имю в виду SQL запрос к листу через драйвер ODBC.
Тут правда к данным придется добавить первичный ключ
(который и будет указывать результат поска),
например, равный номеру строки.
Есть, ограничение: запрос выполняется в пределах 1 листа.
Я имю в виду SQL запрос к листу через драйвер ODBC.
Тут правда к данным придется добавить первичный ключ
(который и будет указывать результат поска),
например, равный номеру строки.
Есть, ограничение: запрос выполняется в пределах 1 листа.
-
- Сообщения: 6
- Зарегистрирован: 17 окт 2012, 23:13
- Откуда: Philippines
- Контактная информация:
cialis acquistare, <a href=http://acquistocialissicuramed.com/#88127>cialis</a>, http://acquistocialissicuramed.com/#24383 cialis cialis costo, <a href=http://acquistocialissicuramed.com/#76465>cialis acquistare</a>, http://acquistocialissicuramed.com/#77709 acquisto cialis