ВПР по нескольким столбцам
у меня есть следующая формула в моем столбце 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
затем перетащите это повсюду.
- Значение Подстановки. Используйте этот $A1 (положите $ на A, а не 1)
- исходные данные-поставить $ знаки везде
- индекс столбца нет. Просто используйте имя столбца, из которого нужно извлечь данные(например, столбец (B1), если значение поиска находится в столбце A, и вы хотите значение из столбца B).
- тип
false
или0