![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 27.09.2010
Сообщений: 40
|
![]()
всем дня доброго!
задача тривиальная - есть 2 таблици, на 2х листах. в обеих есть т.н. ключевое поле - артикул. необходимо в 1й таблице подставить значения цены и кол-ва из второй таблицы соответственно артикулу. как решаю? у меня 2 варианта работаем через find или через vplookup Код:
Код:
Object variable or With block variable not set но по коду нет ни того ни другого, да и ошибка какая то фантомная, причем возникает всегда во втором блоке, который делает замену по ценам, хотя они идентичны! научите юзать find!! пожалуйста! 2я версия, где vplookup в полный рост - вообзе никогда не заканчивается, вернее ждал 5 минут и бросал это дело!)) товарищи - научите уму разуму) |
![]() |
![]() |
![]() |
#2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
Вашу же процедуру еще и запускать надо время от времени, надо еще решить когда..., а просто формулу написать в две колонки? ВПР(...
и данные постоянно актуальны, и не исключаю, что будет быстрее работать.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Если в данных нет формул (ибо они затрутся) я бы сделал на массивах:
(в детали не вник, поэтому мысль в общем) 1. берём оба диапазона в массивы 2. циклом перебираем оба, заменяем в одном или обоих значения 3. выгружаем данные назад 17*12к обработает за пару секунд. А с Find надо предусмотреть, что делать, если не нашлось. И никаких Activate - это только тормозит. В общем, я бы сделал на массивах, или переписал заново с Find, если в той области есть формулы.
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#4 | |
Пользователь
Регистрация: 27.09.2010
Сообщений: 40
|
![]() Цитата:
с массивами дела, как то очень долгло. а без Activate - вернет позицию найденного?строку.? |
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
VBA массивы - это очень быстро. Быстрее, чем ADO...
![]() Пример по поиску: Код:
Вместо Found можно использовать любую переменную, тип Range.
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 27.10.2010 в 11:54. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 472
|
![]()
Подобная задача может быть решена с помощью библиотеки ADO, см. вложение. Скорость обработки практически не зависит от объема данных. Предварительно необходимо подключить данну библиотеку: Сервис - Редактор Visual Basic - Tools - References - установите птичку напротив Microsoft ActiveX Data Objects 2.0 Library - OK. Нажмите "Выполнить". Результат: Лист3
Последний раз редактировалось EugeneS; 27.10.2010 в 12:21. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
И тот же результат на массивах:
Код:
P.S.Померил -в 3 раза массивы медленнее на таком переборе оказались... Даже на чуть более быстром коде: Код:
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 27.10.2010 в 12:47. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 27.09.2010
Сообщений: 40
|
![]() |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
set x = Worksheets("ñëè÷èòåëüíàÿ").Range("b 1:b" & nLastrow2).Find(What:=sekkk(i, 2))
попробуйте так. Опробовал, работает: Код:
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 27.10.2010 в 12:55. |
![]() |
![]() |
![]() |
#10 | |
Пользователь
Регистрация: 27.09.2010
Сообщений: 40
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Cant Find mistake | dikabraz | Паскаль, Turbo Pascal, PascalABC.NET | 10 | 19.10.2010 20:17 |
метод find | kate158 | Общие вопросы Delphi | 4 | 15.12.2009 16:09 |
Find WebBrowser | Edward | Работа с сетью в Delphi | 2 | 04.09.2009 20:03 |
Макрос, расширяющий функцию Find | neugadal | Microsoft Office Word | 5 | 29.09.2008 08:32 |