Существует способ значительно ускорить это (коэффициент 3000, см. Пояснение ниже): если вы сортируете данные в столбце C на рабочем листе DNC Worksheet
, вы можете запустить MATCH
без 0
в конце, то есть =MATCH(A2,'DNC Worksheet'!$C:$C)
. (Примечание: Excel 2007 и более поздние версии достаточно умны, когда дело доходит до использования полного столбца, поэтому нет необходимости указывать здесь 100000!).
Первоначальный недостаток этого подхода заключается в том, что вы также получите совпадение, даже если A2 не включен в столбец C. Однако это можно решить с помощью следующей формулы:
=IF(INDEX('DNC Worksheet'!$C:$C,MATCH(A2,'DNC Worksheet'!$C:$C))=A2,MATCH(A2,'DNC Worksheet'!$C:$C),"no match")
Конечно, вы можете наполовину вычислить это время, поместив совпадение в одну ячейку (скажем, B2), а затем использовать его в следующей ячейке =IF(INDEX('DNC Worksheet'!$C:$C,B2)=B2,B2,"no match")
.
Немного предыстории:
Если вы предоставите MATCH
(или VLOOKUP
) с параметром 0/FALSE
в конце, Excel выполнит точный поиск, то есть начнет с первой ячейки в C2, проверит, соответствует ли она. Если нет, он продолжается до следующего, пока не найдет значение или не получит N/A!
ошибка. Следовательно, если у вас есть 100 000 наборов данных, то в среднем потребуется 50 000 сравнений, пока не будет найдено значение (= n/2) - поэтому в вашем случае общее количество вычислений равно 1,25 B!
Если параметр FALSE
пропущен, Excel предполагает, что диапазон отсортирован, и применяет двоичный алгоритм поиска: он начинается в середине диапазона, то есть в ячейке 50 000, и проверяет, является ли его значение большим или меньшим. Предполагая, что оно больше, значение, которое вы пытаетесь найти, должно быть между ячейкой 1 и 50000. Теперь он снова проверяет середину этого диапазона и т.д. Следовательно, для сравнения потребуется log2(n), в вашем случае ~ 17. Таким образом, общее количество вычислений составляет всего 425 КБ, то есть оно будет вычисляться в 3000 раз быстрее! :-)
Для дальнейшего чтения / настройки производительности, я рекомендую этот сайт !