|
Поиск на листе макросом
|
|||
---|---|---|---|
#18+
Всем привет. Ситуация такая - есть 2 листа с двумя большими таблицами с данными о юр. лицах. В обоих списках присутствует столбец ИНН. Нужно найти юр.лица в первом списке с такими ИНН'ами, которые также есть и во втором. И поместить результат на третий лист. Проблема в объеме - на 1 листе 1 000 записей, на втором 100 000. Буду рад советам, как лучше реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2013, 17:26 |
|
Поиск на листе макросом
|
|||
---|---|---|---|
#18+
ВПР-ом пробовали пользоваться? Что-нибудь вышло? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2013, 17:31 |
|
Поиск на листе макросом
|
|||
---|---|---|---|
#18+
Как ВПР() использовать в макросе, а не в строке с формулой? Пока не нашел нормального решения запустил простой перебор, т.е. каждый ИНН с одного листа сравнивается в цикле с каждым значением с другого .... уже час кубатурит и края не видно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2013, 17:42 |
|
Поиск на листе макросом
|
|||
---|---|---|---|
#18+
krot_paulКак ВПР() использовать в макросе, а не в строке с формулой?а зачем им пользоваться в макросе? в макросе можно воспользоваться, к примеру, sql-запросом ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2013, 17:43 |
|
Поиск на листе макросом
|
|||
---|---|---|---|
#18+
Shocker.Prokrot_paulКак ВПР() использовать в макросе, а не в строке с формулой?а зачем им пользоваться в макросе? в макросе можно воспользоваться, к примеру, sql-запросом 1. Что касается ВПР, то искомое значение в этой функции ж - конкретное одно значение только. Т.е. эту функцию надо применить 1000 раз, для каждого значения из меньшего списка. Так же? 2. sql-запрос я умею в excel применять только для выгрузки данных из какой-либо базы. Чего я не знаю? Как можно применять sql-запросы к данным в листах??? Вы это имеете в виду?? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2013, 17:56 |
|
Поиск на листе макросом
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
вот условный пример для получения данных из листа с помощью sql-запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2013, 18:51 |
|
Поиск на листе макросом
|
|||
---|---|---|---|
#18+
Круто, не знал. И join можно применять? :) А в плане производительности как. надо проверить... Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2013, 19:03 |
|
Поиск на листе макросом
|
|||
---|---|---|---|
#18+
можно производительность приличная - быстрее перебора ячеек на порядки ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2013, 19:50 |
|
Поиск на листе макросом
|
|||
---|---|---|---|
#18+
Если отсортировать большой список по столбцу поиска и опустить последний аргумент ВПР ("интервальный просмотр"), функция будет работать во много раз быстрее. Если нужно выбрать из таблицы несколько значений, комбинация ИНДЕКС(ПОИСКПОЗ()) оказывается выгоднее, чем ВПР. С учетом этого, таблицы 1000 на 100000 обработаются за время порядка минуты. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2013, 20:05 |
|
Поиск на листе макросом
|
|||
---|---|---|---|
#18+
КазанскийС учетом этого, таблицы 1000 на 100000 обработаются за время порядка минуты.А запросом - как бы не меньше секунды... особенно, если после связи (ИНН) преобразовать предварительно в число. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2013, 21:14 |
|
Поиск на листе макросом
|
|||
---|---|---|---|
#18+
КазанскийЕсли отсортировать большой список по столбцу поиска и опустить последний аргумент ВПР ("интервальный просмотр"), функция будет работать во много раз быстрее. Так а если его убрать, разве будет верно искать ВПР? Я так понимаю, что он будет искать "неточное" совпадение или я не прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2013, 09:05 |
|
Поиск на листе макросом
|
|||
---|---|---|---|
#18+
Maxim12345678Так а если его убрать, разве будет верно искать ВПР? Я так понимаю, что он будет искать "неточное" совпадение или я не прав?В Справке написано: F1Если точное соответствие не найдено, то возвращается наибольшее значение, которое меньше, чем искомое_значение.То есть специально искажать данные функция не будет Если есть точное соответствие - сработает так же, как при последнем аргументе ЛОЖЬ, если нет - вернет значение из предыдущей строки. Если надо не допустить неточного соответствия, следует сначала найти номер записи с помощью ПОИСКПОЗ с интервальным просмотром и сравнить искомое значение с помощью ИНДЕКС(...;номер_записи). И получить всю запись сразу тоже с помощью ИНДЕКС. Эта функция может возвращать массив (строку или столбец) и очень быстрая. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2013, 15:58 |
|
|
start [/forum/topic.php?fid=61&msg=38220819&tid=2174870]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 126ms |
0 / 0 |