Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

замена функции ВПР через VBA

Автор Jim, 18.08.2011, 12:06

« назад - далее »

Jim

всем доброго времени суток!

столкнулся с такой проблемой, что функция ВПР очень медленно работает.
у меня есть очень большая таблица - "Классификатор" (примерно 500 тыс. строк), из нее я через ВПР подтягиваю 4 столбца в другую таблицу (30-50 тыс строк). это занимает очень много времени.

возможно ли через VBA сделать макрос заменяющий ВПР, но работающий быстрее.
необходимо чтобы после запуска такого макроса было следующиее:
1. выскакивало окно с просьбой указать путь к Классификатору.
2. далее спрашивало номера столбцов которые необходимо подтянуть.

может кто помочь такое сделать?

всем заранее спасибо.!

nilem

Есть интересный алгоритм для быстрого поиска в отсортированном массиве. Но нужен примерчик Вашего классификатора (строк на 1000, или залейте полный файл на файлообменник) и что нужно из него получить.

Jim

примеры вложил.
файл - "пример классификатора.xlsx" это откуда брать информацию.
файл - "файл 2.xlsx" это куда втянуть. подтянуть необходимо остальные 4 столбца.

nilem


Sergey Bezridnyy

#4
Добрый день всем!

Столкнулся с той же проблемой, что и Jim - в таблице 20 000 строк и 3 столбца содержат формулу ВПР. Из-за этого таблица пересчитывается при открытии иногда мин по 5. Случайно наткнулся на Ваше решение, как заменить ВПР. Очень красивое и, по-видимому, быстрое. Но не смог применить к своей таблице, т.к. макрос, судя по всему, работает только если в первом столбце числа. У меня же - текст и, притом, из нескольких слов.
ПРосьба: 1. Можно ли адаптировать макрос, чтобы искало и по текстовым данным в первом столбце?
2. Возможно ли сделать так, чтобы выбирать не только столбец в который вставляются данные из классификатора (ст. A), но и столбец, по которому эти данные искать в классификаторе? (например, в столбец В я вставил данные из классификатора при поиске по столбцу А; а в столбец С - данные при поиске по столбцу В).

Заранее благодарю!
NULL

Alexandr1

Макрос прекрасно работает и с текстовыми данными, проверено.

Но вопрос, а можно ли брать данные из файла с расширением .dbf, попробовал, в строку
  .Filters.Add "Excel", "*.xls;*.xlsx;*.dbf;*.xlsm", 1: .AllowMultiSelect = False     добавил в перечень файлов *.dbf
но выдает ошибку на строке   Set wb = GetObject(.SelectedItems(1))