powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поиск на листе макросом
12 сообщений из 12, страница 1 из 1
Поиск на листе макросом
    #38220807
krot_paul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Ситуация такая - есть 2 листа с двумя большими таблицами с данными о юр. лицах.
В обоих списках присутствует столбец ИНН.
Нужно найти юр.лица в первом списке с такими ИНН'ами, которые также есть и во втором. И поместить результат на третий лист.
Проблема в объеме - на 1 листе 1 000 записей, на втором 100 000.
Буду рад советам, как лучше реализовать.
...
Рейтинг: 0 / 0
Поиск на листе макросом
    #38220819
Maxim12345678
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВПР-ом пробовали пользоваться? Что-нибудь вышло?
...
Рейтинг: 0 / 0
Поиск на листе макросом
    #38220838
krot_paul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как ВПР() использовать в макросе, а не в строке с формулой?

Пока не нашел нормального решения запустил простой перебор, т.е. каждый ИНН с одного листа сравнивается в цикле с каждым значением с другого .... уже час кубатурит и края не видно.
...
Рейтинг: 0 / 0
Поиск на листе макросом
    #38220839
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krot_paulКак ВПР() использовать в макросе, а не в строке с формулой?а зачем им пользоваться в макросе? в макросе можно воспользоваться, к примеру, sql-запросом
...
Рейтинг: 0 / 0
Поиск на листе макросом
    #38220861
krot_paul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Prokrot_paulКак ВПР() использовать в макросе, а не в строке с формулой?а зачем им пользоваться в макросе? в макросе можно воспользоваться, к примеру, sql-запросом

1. Что касается ВПР, то искомое значение в этой функции ж - конкретное одно значение только. Т.е. эту функцию надо применить 1000 раз, для каждого значения из меньшего списка. Так же?

2. sql-запрос я умею в excel применять только для выгрузки данных из какой-либо базы. Чего я не знаю? Как можно применять sql-запросы к данным в листах??? Вы это имеете в виду??
...
Рейтинг: 0 / 0
Поиск на листе макросом
    #38220920
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim cn As Object, rs As Object
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ThisWorkbook.FullName + ";Extended Properties='Excel 8.0'"
rs.Open "select NUM, Sum(SUM) from [Лист2$] group by NUM order by Sum(SUM) DESC", cn, 3
Cells(1, 5).CopyFromRecordset rs
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

вот условный пример для получения данных из листа с помощью sql-запроса
...
Рейтинг: 0 / 0
Поиск на листе макросом
    #38220934
krot_paul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Круто, не знал.
И join можно применять? :)
А в плане производительности как. надо проверить...
Спасибо.
...
Рейтинг: 0 / 0
Поиск на листе макросом
    #38220974
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно
производительность приличная - быстрее перебора ячеек на порядки
...
Рейтинг: 0 / 0
Поиск на листе макросом
    #38220985
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если отсортировать большой список по столбцу поиска и опустить последний аргумент ВПР ("интервальный просмотр"), функция будет работать во много раз быстрее.
Если нужно выбрать из таблицы несколько значений, комбинация ИНДЕКС(ПОИСКПОЗ()) оказывается выгоднее, чем ВПР.
С учетом этого, таблицы 1000 на 100000 обработаются за время порядка минуты.
...
Рейтинг: 0 / 0
Поиск на листе макросом
    #38221031
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КазанскийС учетом этого, таблицы 1000 на 100000 обработаются за время порядка минуты.А запросом - как бы не меньше секунды... особенно, если после связи (ИНН) преобразовать предварительно в число.
...
Рейтинг: 0 / 0
Поиск на листе макросом
    #38221251
Maxim12345678
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КазанскийЕсли отсортировать большой список по столбцу поиска и опустить последний аргумент ВПР ("интервальный просмотр"), функция будет работать во много раз быстрее.

Так а если его убрать, разве будет верно искать ВПР? Я так понимаю, что он будет искать "неточное" совпадение или я не прав?
...
Рейтинг: 0 / 0
Поиск на листе макросом
    #38222112
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim12345678Так а если его убрать, разве будет верно искать ВПР? Я так понимаю, что он будет искать "неточное" совпадение или я не прав?В Справке написано:
F1Если точное соответствие не найдено, то возвращается наибольшее значение, которое меньше, чем искомое_значение.То есть специально искажать данные функция не будет
Если есть точное соответствие - сработает так же, как при последнем аргументе ЛОЖЬ, если нет - вернет значение из предыдущей строки.
Если надо не допустить неточного соответствия, следует сначала найти номер записи с помощью ПОИСКПОЗ с интервальным просмотром и сравнить искомое значение с помощью ИНДЕКС(...;номер_записи). И получить всю запись сразу тоже с помощью ИНДЕКС. Эта функция может возвращать массив (строку или столбец) и очень быстрая.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поиск на листе макросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]