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

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

Автор: Xiaoyang Последна промяна: 2021-01-27

Обикновено в Excel, когато използвате функцията VLOOKUP, ако има няколко стойности, които отговарят на критериите, можете да получите само първата. Но понякога искате да върнете всички съответстващи стойности, които отговарят на критериите, в една клетка, както е показано на следната екранна снимка, как бихте могли да го разрешите?

Vlookup за връщане на множество стойности в една клетка с функция TEXTJOIN (Excel 2019 и Office 365)

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

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


Vlookup за връщане на множество стойности в една клетка с функция TEXTJOIN (Excel 2019 и Office 365)

Ако имате по-висока версия на Excel като Excel 2019 и Office 365, има нова функция - ПРИСЪЕДИНЕТЕ СЕ, с тази мощна функция можете бързо да направите vlooking и да върнете всички съответстващи стойности в една клетка.

Vlookup за връщане на всички съответстващи стойности в една клетка

Моля, приложете формулата по-долу в празна клетка, където искате да поставите резултата, след което натиснете Ctrl + Shift + Enter клавиши заедно, за да получите първия резултат, и след това плъзнете манипулатора за попълване надолу до клетката, която искате да използвате тази формула, и ще получите всички съответни стойности, както е показано на екранната снимка по-долу:

=TEXTJOIN(",",TRUE,IF($A$2:$A$11=E2,$C$2:$C$11,""))

Забележка: В горната формула, A2: A11 дали обхватът за търсене съдържа данните за търсене, E2 е търсената стойност, C2:C11 е диапазонът от данни, от който искате да върнете съответстващите стойности, "," е разделителят за разделяне на множеството записи.

Vlookup за връщане на всички съответстващи стойности без дубликати в една клетка

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

Моля, копирайте и поставете следната формула в празна клетка, след което натиснете Ctrl + Shift + Enter ключовете заедно, за да получите първия резултат, и след това копирайте тази формула, за да попълните други клетки, и ще получите всички съответстващи стойности без дублиращите се, както е показано на екранната снимка по-долу:

=TEXTJOIN(",", TRUE, IF(IFERROR(MATCH($C$2:$C$11, IF(E2=$A$2:$A$11, $C$2:$C$11, ""), 0),"")=MATCH(ROW($C$2:$C$11), ROW($C$2:$C$11)), $C$2:$C$11, ""))

Забележка: В горната формула, A2: A11 дали обхватът за търсене съдържа данните за търсене, E2 е търсената стойност, C2:C11 е диапазонът от данни, от който искате да върнете съответстващите стойности, "," е разделителят за разделяне на множеството записи.

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

Горната функция TEXTJOIN е достъпна само за Excel 2019 и Office 365, ако имате други по-ниски версии на Excel, трябва да използвате някои кодове за завършване на тази задача.

Vlookup за връщане на всички съответстващи стойности в една клетка

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

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

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

Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
'Updateby Extendoffice
Dim xResult As String
On Error Resume Next
If CriteriaRange.Count <> ConcatenateRange.Count Then
    ConcatenateIf = CVErr(xlErrRef)
    Exit Function
End If
For i = 1 To CriteriaRange.Count
    If CriteriaRange.Cells(i).Value = Condition Then
        xResult = xResult & Separator & ConcatenateRange.Cells(i).Value
    End If
Next i
If xResult <> "" Then
    xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If
ConcatenateIf = xResult
Exit Function
End Function

3. След това запазете и затворете този код, върнете се в работния лист и въведете тази формула: =CONCATENATEIF($A$2:$A$11, E2, $C$2:$C$11, ", ") в конкретна празна клетка, където искате да поставите резултата, след това плъзнете манипулатора за попълване надолу, за да получите всички съответстващи стойности в една клетка, която искате, вижте екранната снимка:

Забележка: В горната формула, A2: A11 дали обхватът за търсене съдържа данните за търсене, E2 е търсената стойност, C2:C11 е диапазонът от данни, от който искате да върнете съответстващите стойности, "," е разделителят за разделяне на множеството записи.

Vlookup за връщане на всички съответстващи стойности без дубликати в една клетка

За да игнорирате дубликатите в върнатите съответстващи стойности, моля, направете следния код.

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

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

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

Function MultipleLookupNoRept(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer)
'Updateby Extendoffice
    Dim xDic As New Dictionary
    Dim xRows As Long
    Dim xStr As String
    Dim i As Long
    On Error Resume Next
    xRows = LookupRange.Rows.Count
    For i = 1 To xRows
        If LookupRange.Columns(1).Cells(i).Value = Lookupvalue Then
            xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Value, ""
        End If
    Next
    xStr = ""
    MultipleLookupNoRept = xStr
    If xDic.Count > 0 Then
        For i = 0 To xDic.Count - 1
            xStr = xStr & xDic.Keys(i) & ","
        Next
        MultipleLookupNoRept = Left(xStr, Len(xStr) - 1)
    End If
End Function

3. След като въведете кода, щракнете Инструменти > Препратки в отвореното Microsoft Visual Basic за приложения прозорец и след това изскочи Препратки – VBAProject диалогов прозорец, проверете Microsoft Scripting Runtime опция в Налични препратки списъчно поле, вижте екранни снимки:

4, След това кликнете OK за да затворите диалоговия прозорец, запишете и затворете прозореца с код, върнете се в работния лист и въведете тази формула: =MultipleLookupNoRept(E2,$A$2:$C$11,3) into a blank cell where you want to output the result, and then drag the fill hanlde down to get all matching values, see screenshot:

Забележка: В горната формула, A2:C11 е диапазонът от данни, който искате да използвате, E2 е търсената стойност, числото 3 е номерът на колоната, която съдържа върнатите стойности.

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

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

Забележка:За да приложите това Разширено комбиниране на редове, първо, трябва да изтеглите Kutools за Excelи след това приложете функцията бързо и лесно.

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

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

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

3. В изскочилото Разширено комбиниране на редове диалогов прозорец:

  • Щракнете върху името на ключовата колона, въз основа на която да се комбинира, и след това щракнете Първичен ключ
  • След това щракнете върху друга колона, чиито данни искате да комбинирате въз основа на ключовата колона, и щракнете Комбинирам за да изберете един разделител за разделяне на комбинираните данни.

4. След това кликнете OK и ще получите следните резултати:

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


Още относителни статии:

  • Функция VLOOKUP с някои основни и разширени примери
  • В Excel функцията VLOOKUP е мощна функция за повечето потребители на Excel, която се използва за търсене на стойност в най-лявата част на диапазона от данни и връщане на съответстваща стойност в същия ред от колона, която сте посочили. Този урок говори за това как да използвате функцията VLOOKUP с някои основни и разширени примери в Excel.
  • Връща множество съответстващи стойности въз основа на един или няколко критерия
  • Обикновено търсенето на конкретна стойност и връщането на съответстващия елемент е лесно за повечето от нас с помощта на функцията VLOOKUP. Но опитвали ли сте някога да върнете множество съвпадащи стойности въз основа на един или повече критерии? В тази статия ще представя някои формули за решаване на тази сложна задача в Excel.
  • Vlookup и връщане на множество стойности вертикално
  • Обикновено можете да използвате функцията Vlookup, за да получите първата съответстваща стойност, но понякога искате да върнете всички съответстващи записи въз основа на конкретен критерий. В тази статия ще говоря за това как да направя vlookup и да върна всички съвпадащи стойности вертикално, хоризонтално или в една клетка.
  • Vlookup и връщане на множество стойности от падащия списък
  • В Excel, как бихте могли да направите vlooking и да върнете множество съответстващи стойности от падащ списък, което означава, че когато изберете един елемент от падащия списък, всичките му относителни стойности се показват наведнъж. В тази статия ще представя решението стъпка по стъпка.

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

🤖 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 (43)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
I have created a problem.
"I" have combined a "Textjoin" end "Vlookup" to return multiple values in to one single cell.
My problem is that the formula have to have an exact value to look for and I want it to lookup an "almost" match or Partial match.

Example: I have made a schedule how we ate going to work and a D1 is working from 07:30-16:00. And to lookup D1 is not the problem, the problem is that my boss sometimes puts other stuff togeather with the D1... Like "D1 +" or "D1 meeting".
Since my formula only lookup "D1" it misses for example the "D1 +".

My formula (that I have gotten from the web) =TEXTJOIN(" och ";SANT;OM($B$3:$B$15=$C$22:$F$22;$A$3:$A$15;""))It´s in swedish so "SANT" is "TRUE" and "OM" is "IF".

How can I make the formula lookup all the cells that have some form of "D1" in it and return all those to the same cell?
No matter if it says "D1 +" or "D1 meeting" or whatever.
The reson I want this, is because the boss always leave "D1" but can add other text behind the "D1"... and just because of that, my boss messes up my formula.
This comment was minimized by the moderator on the site
Hi!
This is a great VBA-Code which could help me a lot.But when I start the Function MultipleLookupNoRept Excel crashs...I´ve got a Dataset with about 6.000 Rows (Excel 2013).... is this too much for the VBA Function?

Thanks!
This comment was minimized by the moderator on the site
Hello Mr.XXL,Sorry to hear that. The row limit for Excel 2013 is 1048576. Therefore, maybe the VBA code is the reason for the crash.
Anyway, I would love to offer you another VBA code for Vlookup To Return All Matching Values Without Duplicates Into One Cell. Please use the VBA code below:
Option Explicit

Function Lookup_concat(Search_string As String, _
Search_in_col As Range, Return_val_col As Range)

Dim i As Long
Dim temp() As Variant
Dim result As String
ReDim temp(0)

For i = 1 To Search_in_col.Count
If Search_in_col.Cells(i, 1) = Search_string Then
temp(UBound(temp)) = Return_val_col.Cells(i, 1).Value
ReDim Preserve temp(UBound(temp) + 1)
End If
Next

If temp(0) <> "" Then
ReDim Preserve temp(UBound(temp) - 1)
Unique temp
For i = LBound(temp) To UBound(temp)
result = result & " " & temp(i)
Next i
Lookup_concat = Trim(result)
Else
Lookup_concat = ""
End If

End Function

Function Unique(tempArray As Variant)

Dim coll As New Collection
Dim Value As Variant

On Error Resume Next
For Each Value In tempArray
If Len(Value) > 0 Then coll.Add Value, CStr(Value)
Next Value
On Error GoTo 0

ReDim tempArray(0)

For Each Value In coll
tempArray(UBound(tempArray)) = Value
ReDim Preserve tempArray(UBound(tempArray) + 1)
Next Value

End Function

After you insert this VBA code in the Module, please type the formula =Lookup_concat(E2,$A$2:$A$14,$C$2:$C$14) into a blank cell where you want to output the result, and then drag the fill hanlde down to get all matching values. Please see the file I uploaded in this comment. Hope it solves your problem. 
Sincerely,Mandy

This comment was minimized by the moderator on the site
Hi, Thanks so much this worked!I used it to pull dates, that populated in the serial number format (<span style="letter-spacing: 0.2px; color: inherit; font-family: inherit; font-style: inherit; font-variant-ligatures: inherit; font-variant-caps: inherit; font-weight: inherit;">Changing the format to short date format using =TEXT(A2,”mm/dd/yy”) OR =DATEVALUE(A2) are not working. Do you have any solutions?</span>
This comment was minimized by the moderator on the site
Thank you for the explanations, however the function 'MultipleLookupNoRept' does not work on my file, could you tell me if an error exists.
This comment was minimized by the moderator on the site
Hi, Hasnae,Please check if you miss the third step -  check Microsoft Scripting Runtime option in the Available References list box.

This comment was minimized by the moderator on the site
Thank you so much for the code. Is there a way I can use the code to look up multiple values from multiple sheets? I tried to combine your function with IFERROR function but it doesn't seem to work.
This comment was minimized by the moderator on the site
Can this be modified to place the sum of those values? Instead of (400 400 400 400 400 400), can it sum them to show (2400)?
This comment was minimized by the moderator on the site
How with HLookUp function?
This comment was minimized by the moderator on the site
thanks for the code. I have modified it to allow you to optionally specify your own separator, Default is " ", if you specify the separator as"#cr" it will insert a CR/LF so the values will be on a separate line in the cell. It only applies the separator if there are multiple values

Function MYVLOOKUP(pValue As String, pWorkRng As Range, pIndex As Long, Optional ByVal pSep As Variant)

' ### Returns multiple values from a table into 1 cell ###

' pValue is the key value to lookup

' WorkRng is the Table you want to look up

' pIndex is the column # for the values to be returned from the pWorkRng

' pSep (optional) is the separator to be used. if omitted then default is a space (it doesn't apply the separator for the 1st entry)

' if the separtor = "#cr" it will separate the values on different line in the cell

Dim rng As Range

Dim sSep As String

Dim xResult As String

Dim Item1 As Boolean

Item1 = True



If IsMissing(pSep) = True Then

sSep = vbCr

Else

If pSep = "#cr" Then

sSep = vbCrLf

Else

sSep = pSep

End If

End If



xResult = ""

For Each rng In pWorkRng

If rng = pValue Then

If Item1 Then

xResult = xResult & rng.Offset(0, pIndex - 1)

Item1 = False

Else

xResult = xResult & sSep & rng.Offset(0, pIndex - 1)

End If

End If

Next

MYVLOOKUP = xResult

End Function
This comment was minimized by the moderator on the site
Thank you for this, the line breaks are what i needed to top this formula off! Question, is there a way to modify the code so that two values are compared? For example, similar to what we see with index and match, can i look for Product and Quantity columns, and based on those parameters it outputs results from the Region Column?
This comment was minimized by the moderator on the site
Thanks a lot for this code, it is very helpful. Does anyone know away to sum the values in the cell to just have at total of them.
Cheers
This comment was minimized by the moderator on the site
Hello, James, to sum values based on the corresponding items, the following article may help you, please chek it:
https://www.extendoffice.com/documents/excel/1268-excel-combine-duplicate-rows-and-sum.html
This comment was minimized by the moderator on the site
I have a server, it has connected with multiple applications. I want to compare compare two column and get the related applications details for that server.

What is the command for that.
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations