|
|
|
Проблема использования Find с ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
Создаю ADODB.Recordset (Microsoft ActivX Data Objects 2.5 Library) в Excel 2010 Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. Пытаюсь найти требуемое число по критерию методом Find Код: vbnet 1. 2. 3. 4. 5. Получаю 916. Что делаю не так? И как правильно? Или остаётся только работать через Filter? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 06:23 |
|
||
|
Проблема использования Find с ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
Ухты, не думал, что так до сих пор делают. Проблемы с .Find давно известны. Тем более у вас 2.5. Впрочем в 2.8 его тоже так до конца не допилили. В принципе, можно попробовать .MoveLast вместо .MoveFirst перед .Find либо в самом .Find указать Start = adBookmarkLast. Только всё равно, ничего серьёзного я бы такому решению не доверил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 07:34 |
|
||
|
Проблема использования Find с ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
ElenHim Спасибо большое, вот так помогло. Код: vbnet 1. 2. 3. 4. Странно, что при сортировке по убыванию не ищет первый наибольший из меньших или равных заданного. А подскажите, как лучше в Excel искать, сортировать, фильтровать? Не на рабочем же листе вспомогательные вычисления делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 08:26 |
|
||
|
Проблема использования Find с ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
Тащемто полно всего. Всё зависит от задачи, её регулярности, и, возможно в первую очередь, от объёма данных. Для небольших наборов данных вполне подойдёт стандартный функционал, таже сортировка и автофильтр, расширенный фильтр сводные таблицы, динамические диапазоны, формулы (особенно из группы ссылок и массивов), собственно формулы массивов, также весьма способствует функция быстрого выделения/перехода, именнование диапазонов/формул/массивов. Соответственно, всё это можно программировать. Опять же, ADO. Только не через find и sort, а через SQL. Если скорость стоит на первом месте, существует множество специальных алгоритмов, как то быстрой сортировки, бинарного поиска и т.д. Всё это можно сделать в VBA (VB, .NET), в сети также есть готовые примеры. Если же данных много, то лучше в полновесной БД обрабатывать, а в Excel уже найденные/отфильтрованные/отсортированные данные выгружать/анализировать/форматировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 09:07 |
|
||
|
Проблема использования Find с ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
ElenHim Если бы можно было на .NET, я бы и вопрос не задавал, но заказчик хочет VBA. Так что надеялся, что может я где то ошибку допускаю, или есть другие стандартные библиотеки со схожей функциональностью. Ради нескольких мелких проектов писать для каждого свою сортировку и бинарный поиск считаю не целесообразным. В любом случае, большое спасибо за консультацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2012, 03:48 |
|
||
|
Проблема использования Find с ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
anvg, есть еще одномерные массивы и функции листа math max min и т.д Для сортировки прекрастно подходит коллекция, для поиска можно и цикл использовать. Массивы значительно быстрее recordset. Для того что бы не писать каждый раз, нужно один раз правильно написать и пользоваться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2012, 10:18 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=37734054&tid=2175843]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
154ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 450ms |

| 0 / 0 |
