2015-04-16 3 views
0

я следующую формулу:Форсирование ВПР

=VLOOKUP(VLOOKUP(A1,[Clients]Sales!$B$1:$C$6,2,0),[Ledger]Sheet1!$G$1:$H$6,2,0) 

, который работает, но у меня есть более 100k строк данных и занимает несколько минут, чтобы извлечь все результаты.

Можно ли ускорить работу?
Является ли VBA самым быстрым вариантом?

+0

ИНДЕКС/МАТЧ может быть быстрее. – pnuts

+0

С небольшими таблицами поиска должно быть много повторяющихся данных в столбце A. Если вы можете отсортировать этот столбец, вы можете уменьшить VLOOKUPs только до первого экземпляра значения, а затем просто повторить это значение для каждого последующего экземпляра , – Rory

+0

Установите рабочий лист на «Ручное обновление», чтобы он не обновлялся при каждом изменении ячейки. В общем, встроенные функции Excel будут быстрее, чем код VBA, который вы пишете. – FreeMan

ответ

1

Я предполагаю, что вы захотите использовать индекс-совпадение. Это пара функций, которые могут реплицировать vlookup и многое другое, но намного быстрее, чем vlookup. Я почти никогда не использую wookup по этой причине.

Я думаю, что вы хотите выглядеть ниже. Однако никаких обещаний, не видящих вашей книги.

= индекс ([Леджер] Лист1 $ H $ 1: $ H $ 6, матч (индекс ([Клиенты] Продажи $ C $ 1: $ C $ 6, матч (A1, [Клиенты] Продажи $ B! $ 1: $ B $ 6,0)), [Леджер] Лист1! $ G $ 1: $ G $ 6,0))

Объяснение: индекс вытягивает n-й элемент из определенного столбца. Матч находит, что это такое.

Смежные вопросы