Прескочи на основното съдържание

Как да направите vlookup и да свържете множество съответстващи стойности в Excel?

Автор: Xiaoyang Последна промяна: 2020-05-09

Както всички знаем, VLOOKUP функцията в Excel може да ни помогне да търсим стойност и да върнем съответните данни в друга колона, но по принцип може да получи само първата относителна стойност, ако има множество съвпадащи данни. В тази статия ще говоря за това как да правя vlookup и да свържа множество съответстващи стойности само в една клетка или вертикален списък.

Vlookup и връщане на множество съответстващи стойности вертикално с формула

Vlookup и свързване на множество съвпадащи стойности в клетка с дефинирана от потребителя функция

Vlookup и свързване на множество съвпадащи стойности в клетка с Kutools за Excel


Да предположим, че имам следния диапазон от данни, за да получа всички съответни стойности на базата на конкретна стойност вертикално, както е показано на следната екранна снимка, можете да приложите формула за масив.

doc vlookup concatenate 1

1. Въведете тази формула: =IF(COUNTIF($A$1:$A$16,$D$2)>=ROWS($1:1),INDEX($B$1:$B$16,SMALL(IF($A$1:$A$16=$D$2,ROW($1:$16)),ROW(1:1))),"") в празна клетка, където искате да поставите резултата, например E2, и след това натиснете Ctrl + Shift + Enter ключове заедно, за да получите базата на относителната стойност по конкретен критерий, вижте екранната снимка:

doc vlookup concatenate 2

Забележка: В горната формула:

A1: A16 е диапазонът от колони, който съдържа конкретната стойност, която искате да търсите;

D2 показва конкретната стойност, която искате да vlookup;

B1: B16 е диапазонът от колони, от който искате да върнете съответните данни;

$ 1: $ 16 показва препратката към редовете в диапазона.

2. След това изберете клетка E2 и плъзнете манипулатора за запълване надолу към клетките, докато получите празни клетки и всички съответстващи стойности са изброени в колоната, както е показано на следната екранна снимка:

doc vlookup concatenate 3


Вместо да получавате относителните стойности вертикално, понякога искате да съвпадащите стойности в една клетка и да ги свържете с конкретен разделител. В този случай следната дефинирана от потребителя функция може да ви направи услуга.

1. Задръжте надолу ALT + F11 за да отворите Microsoft Visual Basic за приложения прозорец.

2. Щракнете Поставете > Модулии поставете следния код в Модули Window.

VBA код: Vlookup и свързване на множество съвпадащи стойности в клетка

Function CusVlookup(lookupval, lookuprange As Range, indexcol As Long)
'updateby Extendoffice
Dim x As Range
Dim result As String
result = ""
For Each x In lookuprange
    If x = lookupval Then
        result = result & " " & x.Offset(0, indexcol - 1)
    End If
Next x
CusVlookup = result
End Function

3. След това запазете и затворете този код, върнете се в работния лист и въведете тази формула: =cusvlookup(D2,A1:B16,2) в празна клетка, където искате да поставите резултата, и натиснете Въведете ключ, всички съответстващи стойности, базирани на конкретни данни, са върнати в една клетка с разделител за интервал, вижте екранната снимка:

doc vlookup concatenate 4

Забележка: В горната формула: D2 показва стойностите на клетките, които искате да търсите, A1: B16 е диапазонът от данни, който искате да извлечете данните, числото 2 е номерът на колоната, от който трябва да бъде върната съвпадащата стойност, можете да промените тези препратки към вашите нужди.


Ако имате Kutools за Excel, Със своята Разширено комбиниране на редове функция, можете бързо да завършите тази работа с лекота. Тази функция може да ви помогне да комбинирате всички съвпадащи стойности с конкретни разделители въз основа на същите данни в друга колона.

Kutools за Excel : с повече от 300 удобни добавки за Excel, безплатни за изпробване без ограничение за 30 дни.

След инсталиране Kutools за Excel, моля, направете следното:

1. Изберете диапазона от данни, за който искате да получите съответните стойности въз основа на конкретните данни.

2, След това кликнете Kutools > Обединяване и разделяне > Разширено комбиниране на редове, вижте екранна снимка:

3. В Разширено комбиниране на редове в диалоговия прозорец щракнете върху името на колоната, въз основа на която искате да комбинирате, след което щракнете Първичен ключ бутон, вижте екранната снимка:

doc vlookup concatenate 6

4. След това щракнете върху друго име на колона, за което искате да върне съответстващите стойности, и щракнете Комбинирам за да изберете един разделител за разделяне на комбинираните стойности, вижте екранната снимка:

doc vlookup concatenate 7

5, И после щракнете върху Ok всички съответни стойности, базирани на същите стойности, са комбинирани заедно с конкретен разделител, вижте екранните снимки:

doc vlookup concatenate 8 2 doc vlookup concatenate 9

 Изтеглете и изпробвайте безплатно Kutools за Excel сега!


Kutools за Excel: с повече от 300 удобни добавки за Excel, безплатни за изпробване без ограничение за 30 дни. Изтеглете и изпробвайте безплатно сега!

Най-добрите инструменти за продуктивност в офиса

🤖 Kutools AI помощник: Революционизирайте анализа на данни въз основа на: Интелигентно изпълнение   |  Генериране на код  |  Създаване на персонализирани формули  |  Анализирайте данни и генерирайте диаграми  |  Извикване на функциите на Kutools...
Популярни функции: Намерете, маркирайте или идентифицирайте дубликати   |  Изтриване на празни редове   |  Комбинирайте колони или клетки без загуба на данни   |   Кръг без формула ...
Супер търсене: VLookup с множество критерии    VLookup с множество стойности  |   VLookup в няколко листа   |   Размито търсене ....
Разширен падащ списък: Бързо създаване на падащ списък   |  Зависим падащ списък   |  Падащ списък с множество избори ....
Мениджър на колони: Добавете конкретен брой колони  |  Преместване на колони  |  Превключване на състоянието на видимост на скритите колони  |  Сравнете диапазони и колони ...
Препоръчани функции: Мрежов фокус   |  Изглед на дизайна   |   Голям формула бар    Мениджър на работни книги и листове   |  Библиотека с ресурси (Автоматичен текст)   |  Избор на дата   |  Комбинирайте работни листове   |  Шифроване/декриптиране на клетки    Изпращайте имейли по списък   |  Супер филтър   |   Специален филтър (филтър получер/курсив/зачертано...) ...
Топ 15 комплекта инструменти12 Текст Инструменти (добавяне на текст, Премахване на символи, ...)   |   50 + Графика Видове (диаграма на Гант, ...)   |   40+ Практичен формули (Изчислете възрастта въз основа на рождения ден, ...)   |   19 вмъкване Инструменти (Въведете QR код, Вмъкване на картина от пътя, ...)   |   12 Конверсия Инструменти (Числа към думи, Валутен обмен, ...)   |   7 Обединяване и разделяне Инструменти (Разширено комбиниране на редове, Разделени клетки, ...)   |   ... и още

Усъвършенствайте уменията си за Excel с Kutools за Excel и изпитайте ефективност, както никога досега. Kutools за Excel предлага над 300 разширени функции за повишаване на производителността и спестяване на време.  Щракнете тук, за да получите функцията, от която се нуждаете най-много...

Описание


Раздел Office Внася интерфейс с раздели в Office и прави работата ви много по-лесна

  • Разрешете редактиране и четене с раздели в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
  • Отваряйте и създавайте множество документи в нови раздели на един и същ прозорец, а не в нови прозорци.
  • Увеличава вашата производителност с 50% и намалява стотици кликвания на мишката за вас всеки ден!
Comments (16)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Is there any way to get the unique "name" for "class1"
This comment was minimized by the moderator on the site
Hello, sym-john,
Maybe the below article can solve your problem, please view it:
https://www.extendoffice.com/documents/excel/3381-excel-extract-unique-values-with-criteria.html
This comment was minimized by the moderator on the site
This is working great for me - is there anyway to change it that it checks if the cell contains rather than a complete match? Basically I have a list of tasks where:
Column A: Dependencies (eg 10003 10004 10008)
Column B: Task Reference (eg 10001)
Column C: Dependent Tasks (the column for the formula result) - where it would lookup the task reference to see which rows contain it in Column A, and then list the Task Reference of those tasks.

E.g:

Row | Column A | Column B | Column C
1 | | 10001 | 10002 10003
2 | 10001 | 10002 | 10003
3 | 10001 10002 | 10003 |
This comment was minimized by the moderator on the site
you would want to use the Instr() function which will check for something in a string of text in a cell. You can also use Left() and Right() if you are looking for the starting or ending details.
This comment was minimized by the moderator on the site
The cusVlookup worked great for me. Another way to have a different separator is to wrap in two substitute functions. The first (from inside to out) replaces the first space with no space, the second replaces all other spaces with a " / " in mine. Could use "," if you want commas.
=SUBSTITUTE(SUBSTITUTE(cusVlookup(D2,Table1,2)," ","",1)," "," / ")

Also, if your lookup value isn't the first column, you can use 0 or negative numbers to go to column to the left.
=SUBSTITUTE(SUBSTITUTE(cusVlookup(D2,Table1,-1)," ","",1)," "," / ")
This comment was minimized by the moderator on the site
Hi, jeff,
Thanks for your sharing, you must be a warmhearted man.
This comment was minimized by the moderator on the site
I have to say, I have been trying to get a formula for combining multiple values and returning them to a single cell for 2 days now. This "How To" has saved me!! Thank you SO much! I would never have gotten it without your Module!
I do have 2 questions though. I have the deliminator as a comma instead of a space and because of that it starts out with a comma. Is there a way to prevent the start comma but keep the rest?
My second question is; When I use the fill handle it changes the range values as well as the cell value I want to look up. I want it to continue to change the cell number I want to look up but keep the same range values. How can I make this happen?

Thank you so much for your help!!
This comment was minimized by the moderator on the site
Is there a way to delete the duplicate values in the concatenate?
This comment was minimized by the moderator on the site
Hello, Jacob,
May be the following article can help you to solve your problem.
https://www.extendoffice.com/documents/excel/3381-excel-extract-unique-values-with-criteria.html

Please try, hope it can help you!
This comment was minimized by the moderator on the site
Is there a way to list the duplicate values only once, using the vba code and formula above? I am not sure where to put the countif>1 statement in the formula bar, or in the vba itself. Please help
This comment was minimized by the moderator on the site
you can add two extra condition to skip blank cells and to skip duplicates:For i = 1 To CriteriaRange.Count
If CriteriaRange.Cells(i).Value = Condition Then
If ConcatenateRange.Cells(i).Value <> "" Then 'SKIP BANKS
If InStr(xResult, ConcatenateRange.Cells(i).Value) = 0 Then 'SKIP IF FOUND DUPLICATE
xResult = xResult & Separator & ConcatenateRange.Cells(i).Value
End If
End If
End If
Next i
This comment was minimized by the moderator on the site
This is amazing but i am looking for something else, i have a table with RollNo StudentName sub1, sub2, sub3 ... Total Result, When I enter Rollnumber it should give a result like "SName Sub1 64, sub2 78,... Total 389, Result pass", is it possible
This comment was minimized by the moderator on the site
Loved the function for Excel 2013 but amended it slightly to change the separating character to ";" instead of " " and then remove the prefixed ";" from the concantenated values Results matching values in my example would have ;result01 or ;result01;result02 . Added the extra If Left(xResult, 1) = ";" to remove any extra ";" at the beginning of the string if it is the 1st character. I'm sure there is a neater way of doing it but it worked for me. :) Function CusVlookup(pValue As String, pWorkRng As Range, pIndex As Long) Dim rng As Range Dim xResult As String xResult = "" For Each rng In pWorkRng If rng = pValue Then xResult = xResult & ";" & rng.Offset(0, pIndex - 1) If Left(xResult, 1) = ";" Then xResult = MID(xResult,2,255) End If End If Next CusVlookup = xResult End Function
This comment was minimized by the moderator on the site
Make if condition for result if empty.

Function CusVlookup(lookupval, lookuprange As Range, indexcol As Long)
'updateby Extendoffice 20151118
Dim x As Range
Dim result As String
result = ""
For Each x In lookuprange
If x = lookupval Then
If Not result = "" Then
result = result & " " & x.Offset(0, indexcol - 1)
Else
result = x.Offset(0, indexcol - 1)
End If
Next x
CusVlookup = result
End Function
This comment was minimized by the moderator on the site
When using the cusvlookup is there a way to add the last name as well with a comma in between that might appear in Column C
This comment was minimized by the moderator on the site
How to get the result. Please help. data data1 result a 1 a1 b 2 a2 c b1 b2 c1 c2
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations