Переход от VLOOKUP к INDEX / MATCH практически не имеет значения, если вы возвращаете только одно значение для каждого совпадения и все еще используете точное совпадение.
Огромный выигрыш можно получить, сначала отсортировав свои данные и использовав приблизительный поиск (либо в VLOOKUP, либо в INDEX / MATCH).
Сначала отсортируйте данные по возрастанию ParentID, затем используйте следующую формулу для поиска значений:
=IF(VLOOKUP(ParentID,Data,1,TRUE)=ParentID, VLOOKUP(ParentID,Data,2,TRUE), NA())
Если вы на 100% уверены, что ParentID всегда можно найти, вы можете упростить до:
=VLOOKUP(ParentID,Data,2,TRUE)
Опять же, обратите внимание, что вы должны сначала отсортировать данные по ParentID. И вы должны исключить заголовок столбца в диапазоне данных.
Это быстрее, потому что при поиске точного соответствия Excel будет просто начинаться с верхней части списка и проверять каждое отдельное значение, пока не найдет точное совпадение. Таким образом, для списка с 1 миллионом строк требуется до 1 миллиона сравнений.
Для приблизительного соответствия отсортированных данных Excel вместо этого выполняет двоичный поиск. Он проверяет среднее число, затем идет выше или ниже и снова проверяет следующее среднее число и так далее. В списке с 1 миллионом строк требуется не более 20 сравнений, чтобы сузить до одного значения, что ускоряет его работу в 50000 раз.
https://exceljet.net/formula/faster-vlookup-with-2-vlookups