ВПР по нескольким столбцам

у меня есть следующая формула в моем столбце B: B

=VLOOKUP(A1;'mySheet'!$A:$B;2;FALSE)

Он выводит в B:B значения, найденные в mySheet!B: B где A: a = mySheet!А: А. оно работает отлично. Теперь, я хотел бы также получить третью колонку. Он работает, если я добавляю следующую формулу ко всему столбцу C:C:

=VLOOKUP(A1;'mySheet'!$A:$C;3;FALSE)

тем не менее, я работаю с более чем 100k строк и около 40 столбцов. Я не хочу делать 100K * 40 * VLOOKUP, я хотел бы сделать только 100k и не умножать это на все столбцы. Есть ли способ (возможно, с формулами массива) просто сделать VLOOKUP один раз в строке, чтобы получить все необходимые столбцы?


пример

ID|Name
-------
 1|AB
 2|CB
 3|DF
 4|EF

ID|Column 1|Column 2
--------------------
 1|somedata|whatever1
 4|somedate|whatever2
 3|somedaty|whatever3

Я хотел бы получить:

ID|Name|Column 1|Column 2
-------------------------
 1|AB  |somedata|whatever1
 2|CB  |        |
 3|DF  |somedaty|whatever2
 4|EF  |somedate|whatever3

5 ответов


индекс работает быстрее, чем VLOOKUP, я бы рекомендовал использовать это. Это уменьшит нагрузку, которую многие vlookups поставят на вашу систему.

сначала найдите строку, содержащую то, что вам нужно, в вспомогательном столбце с MATCH:

=MATCH(A1,'mySheet'!$A:$A,0)

затем индекс, используя это число, которое вы можете перетащить и заполнить все ваши столбцы:

=INDEX('mySheet'!B:B,$B1)

ваш выход будет сродни:

ID|Name|Match |Column 1 |Column 2
-------------------------
 1|AB  |Match1|IndexCol1|IndexCol2
 2|CD  |Match2|IndexCol1|IndexCol2
 3|EF  |Match3|IndexCol1|IndexCol2

также! Я бы рекомендовал установить эти диапазоны для фактического покрытия данные, а не ссылки на весь столбец, для дополнительного увеличения скорости, например:

=INDEX('mySheet'!B1:B100000,$B1)

Я больше думал о вашей проблеме, и если у вас есть contorl над данными, которые вы ищете, у меня есть еще одно предложение, которое вы могли бы попробовать.

в "mysheet", где хранятся необработанные данные, добавьте новый столбец, который объединяет каждый столбец в одну ячейку, с каким-то уникальным разделителем не в ваших данных:

=B1&"+"&C1&"+"&D1&"+"&E1 etc...

тогда вы можете сделать один VLOOKUP или INDEX/MATCH для каждой строки вместо 40.

как только вы имеете его в Вашем новом листе, вы смогли разделить результаты возвращаются.


расщепление без формул

скопируйте / вставьте результаты формул поиска как значения в следующей колонке.

выберите этот столбец, и в сведения вкладка на ленте, выберите текст по столбцам.

оставить его на разделителями, нажмите далее. Снимите Tab, Регистрация другое, и введите разделитель (+ в моем примере).

клик готово.


разделение с помощью формул

использовать =FIND(), чтобы найти друг delimter, и =MID() чтобы вытащить текст между каждым набором разделителей, используя предыдущий делиметр в качестве Start_num.

безусловно, более сложный из двух методов.


Если я правильно понимаю, одна вещь, которую я бы сделал, чтобы начать, - это использовать =VLOOKUP(A1;'mySheet'!$A:LastColumn;COLUMN(B1);FALSE). Таким образом, ссылка на столбец будет перемещаться при перетаскивании Vlookup вправо.


нет формулы.Нет выхода. Таким образом, не может быть способа применить формулу только к 1 столбцу и перейти к другим. Другой возможный способ-поместить формулу i в ячейку 1, использовать знаки $ интеллектуально и перетащить все ячейки в giffy без необходимости помещать vlookup 40 раз.

Vlookup имеет 4 кода для ввода

1-Значения Подстановки. Используйте это $A1 (положите $ на A, а не 1)

2 - исходные данные-Put $ знаки everywhere

3-индекс столбца нет. Чуть выше всех ваших данных в 1-й строке добавьте пустую строку.Поместите значения 1 в A1, 2 В B1, 3 в C1 и так далее. Теперь в формуле вместо ручного ввода "2" или " 3 " дайте ссылку на эти ячейки.Положите $ на Numberal, а не столбец (B).

4- Type false или 0

затем перетащите это повсюду.


  1. Значение Подстановки. Используйте этот $A1 (положите $ на A, а не 1)
  2. исходные данные-поставить $ знаки везде
  3. индекс столбца нет. Просто используйте имя столбца, из которого нужно извлечь данные(например, столбец (B1), если значение поиска находится в столбце A, и вы хотите значение из столбца B).
  4. тип false или 0