Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2011, 17:21   #1
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию Поиск в справочнике макросом

Доброго всем времени суток.

Есть база и есть справочник.

Нужно в лист база вытянуть из листа справочник "вид". Есть единый критерий "номер" в обеих листах.

Как прописать макрос, чтоб искал быстро, так как в базе номеров может быть очень много?

Я прописывал оператором "For To" но при многом количесве данных ищет долго.
Вложения
Тип файла: rar поиск.rar (21.1 Кб, 18 просмотров)
sasha_prof вне форума Ответить с цитированием
Старый 19.02.2011, 17:36   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Используйте find, например
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 19.02.2011, 17:39   #3
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Используйте find, например
Ссори но не знаю как спользовать его на определенный диапазон.

Напиши пожл.
sasha_prof вне форума Ответить с цитированием
Старый 19.02.2011, 17:40   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Тут не нужны макросы.
Вам поможет простейшая формула:

Код:
  Ячейка: B3      Формула  (стиль A1):   =ВПР(A3;spravochnyk!A:B;2;0)
                  Формула  (стиль R1C1): =ВПР(RC[-1];spravochnyk!C[-1]:C;2;0)
Пример: http://excelvba.ru/XL_Files/Sample__...__19-42-31.zip

Если уж так хочется макрос - можно одной строкой кода вставить формулу в целый диапазон ячеек
EducatedFool вне форума Ответить с цитированием
Старый 19.02.2011, 17:48   #5
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Тут не нужны макросы.
Вам поможет простейшая формула:

Код:
  Ячейка: B3      Формула  (стиль A1):   =ВПР(A3;spravochnyk!A:B;2;0)
                  Формула  (стиль R1C1): =ВПР(RC[-1];spravochnyk!C[-1]:C;2;0)
Пример: http://excelvba.ru/XL_Files/Sample__...__19-42-31.zip

Если уж так хочется макрос - можно одной строкой кода вставить формулу в целый диапазон ячеек

Та нет, ВПР( я знаю, но у меня на столько тяжелая книга что она просто виснет на этой функции.

Так что нужен макрос
sasha_prof вне форума Ответить с цитированием
Старый 19.02.2011, 18:04   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Так что нужен макрос
Вам виднее - спорить не буду. Куда уж мне до ваших познаний Excel...

Проверяйте макрос: http://excelvba.ru/XL_Files/Sample__...__20-28-41.zip

Цитата:
Сообщение от kuklp
Да и ВПР на больших объемах тормознет
Да не такие уж и тормоза, если строк не миллион
Кроме того, если строк действительно ОЧЕНЬ много, можно ВПР вставлять не сразу во весь диапазон, а частями - в диапазоны по 1000 строк из одну итерацию цикла

Последний раз редактировалось EducatedFool; 19.02.2011 в 18:31. Причина: исправил файл во вложении
EducatedFool вне форума Ответить с цитированием
Старый 19.02.2011, 18:13   #7
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Попробуйте. Игорь, Вы не в том формате файл вложили. Да и ВПР на больших объемах тормознет.
Изображения
Тип файла: jpg 2011-02-19_172127.jpg (18.3 Кб, 127 просмотров)
Вложения
Тип файла: rar Zap.rar (21.8 Кб, 17 просмотров)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 19.02.2011 в 18:21.
kuklp вне форума Ответить с цитированием
Старый 19.02.2011, 19:17   #8
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Я конечно же имел ввиду не версию Офиса, а то, что xlsx макросы не поддерживает:-) Кстати результаты у нас разные из-за того, что автор тупо скопировал справочник в рабочий лист(или наоборот). Я так понимаю, что ключевые значения в справочнике повторяться не должны, иначе совпадения нужно искать уже по двум ячейкам.
П.С. Игорь, вот эта строка:
Dim ra As Range: Set ra = Range([A3], Range("A" & Rows.Count).End(IIf(Len(Range("A" & Rows.Count)), xlDown, xlUp))).Offset(, 1)
просто песня. Ни за что бы не додумался сделать так.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 19.02.2011 в 19:24.
kuklp вне форума Ответить с цитированием
Старый 26.02.2011, 00:30   #9
alekzzandr
 
Регистрация: 22.06.2009
Сообщений: 6
По умолчанию

ctrl + F, если я правильно понял задачу
alekzzandr вне форума Ответить с цитированием
Старый 25.03.2011, 12:22   #10
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

Цитата:
Сообщение от alekzzandr Посмотреть сообщение
ctrl + F, если я правильно понял задачу
да только макросом
sasha_prof вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
открытие нескольких книг одним макросом и закрытие книг другим макросом kursant95 Microsoft Office Excel 6 27.01.2011 16:54
поиск не заблокированных ячеек макросом NoLL Microsoft Office Excel 4 24.12.2010 06:23
поиск макросом дубликатов в таблице эксель brokoli Microsoft Office Excel 12 20.01.2009 11:26
Написать программу, которая позволяет найти нужные сведения в телефонном справочнике (a:\phone.txt). Микола-Урал Помощь студентам 1 19.12.2008 23:54