Multi Step Vlookup - PullRequest
       13

Multi Step Vlookup

0 голосов
/ 04 апреля 2019

В настоящее время у меня есть 2 столбца в EXCEL. PARENT_ID, GRAND_PARENT_ID.И хотел выяснить проблемы многоуровневого родительского воспитания. Например

PARENT_ID 111 rolls to GRAND_PARENT_ID 222
AND
PARENT_ID 222 rolls to GRAND_PARENT_ID 333
AND 
PARENT_ID 333 rolls to GRAND_PARENT_ID 444

Until PARENT_ID = GRAND_PARENT_ID.

Так что мне нужно выяснить, сколько уровней сворачивается PARENT_ID. Я как миллионы строк и попытался выяснить vlookup, но это просто убивает / замораживает мою сессию.

Я попробовал vlookup GRAND_PARENT_ID для PARENT_ID, а затем снова взял существующий чанк и снова сделал vlookup для PARENT_ID.its, просто заморозив мою сессию, поскольку у меня миллионы строк

PARENT_ID   GRAND_PARENT_ID
111 222
222 333
333 444
444 444

Ожидаемый результат: 111 222 333 444 until the PARENT_ID to GRAND_PARENT_ID

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Переход от 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

0 голосов
/ 04 апреля 2019

VLOOKUPS очень сильно нагружают процессор для Excel, вам лучше перейти на более сложный (но более легкий) метод INDEX MATCH, который подробно описан здесь: https://exceljet.net/index-and-match

Если это такопцию, которую вы также должны проверить и посмотреть, используете ли вы 32 или 64-битный Excel.(Файл -> Справка -> Правая часть экрана).Если ваш компьютер является 64-битным процессором, то переключение с 32-битного Excel на 64-битный Excel может дать вам небольшое повышение производительности, так как Excel будет использовать больше вычислительной мощности вашего компьютера.

...