Перейти к основному содержанию

Как vlookup вернуть несколько значений в одной ячейке в Excel?

Обычно в Excel, когда вы используете функцию ВПР, если есть несколько значений, соответствующих критериям, вы можете просто получить первое. Но иногда вы хотите вернуть все соответствующие значения, которые соответствуют критериям, в одну ячейку, как показано на следующем снимке экрана, как вы могли бы решить эту проблему?

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

Vlookup возвращает несколько значений в одну ячейку с помощью функции, определяемой пользователем

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


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

Если у вас более поздняя версия Excel, такая как Excel 2019 и Office 365, есть новая функция - ТЕКСТ ПРИСОЕДИНИТЬСЯ, с помощью этой мощной функции вы можете быстро найти и вернуть все совпадающие значения в одну ячейку.

Vlookup возвращает все совпадающие значения в одну ячейку

Примените приведенную ниже формулу в пустую ячейку, в которую вы хотите поместить результат, затем нажмите Shift + Ctrl + Enter вместе, чтобы получить первый результат, а затем перетащите дескриптор заполнения в ячейку, в которой вы хотите использовать эту формулу, и вы получите все соответствующие значения, как показано ниже:

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

Примечание: В приведенной выше формуле A2: A11 содержит ли диапазон поиска данные поиска, E2 это значение поиска, C2: C11 это диапазон данных, из которого вы хотите вернуть совпадающие значения, ","- это разделитель для разделения нескольких записей.

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

Если вы хотите вернуть все совпадающие значения на основе данных поиска без дубликатов, вам может помочь приведенная ниже формула.

Скопируйте и вставьте следующую формулу в пустую ячейку, затем нажмите Shift + Ctrl + 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 вариант в Доступные ссылки список, см. скриншоты:

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 for Excel, С его Расширенные ряды комбинирования функцию, вы можете быстро объединить или объединить строки на основе одного и того же значения и выполнить некоторые вычисления по мере необходимости.

Примечание:Чтобы применить это Расширенные ряды комбинирования, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.

После установки Kutools for Excel, пожалуйста, сделайте следующее:

1. Выберите диапазон данных, в котором вы хотите объединить данные одного столбца на основе другого столбца.

2. Нажмите Кутулс > Слияние и разделение > Расширенные ряды комбинирования, см. снимок экрана:

3. В выскочившем Расширенные ряды комбинирования диалоговое окно:

  • Щелкните имя ключевого столбца, на основе которого нужно объединить, а затем щелкните Основной ключ
  • Затем щелкните другой столбец, данные которого вы хотите объединить на основе ключевого столбца, и щелкните Сочетать выбрать один разделитель для разделения объединенных данных.

4. Затем нажмите OK кнопку, и вы получите следующие результаты:

Загрузите бесплатную пробную версию Kutools for Excel прямо сейчас!


Больше относительных статей:

  • Функция ВПР с некоторыми базовыми и расширенными примерами
  • В Excel функция ВПР - мощная функция для большинства пользователей Excel, которая используется для поиска значения в крайнем левом углу диапазона данных и возврата соответствующего значения в той же строке из указанного вами столбца. В этом руководстве рассказывается о том, как использовать функцию ВПР с некоторыми базовыми и расширенными примерами в Excel.
  • Vlookup и возврат нескольких значений по вертикали
  • Обычно вы можете использовать функцию Vlookup для получения первого соответствующего значения, но иногда вы хотите вернуть все совпадающие записи на основе определенного критерия. В этой статье я расскажу о том, как использовать vlookup и возвращать все совпадающие значения по вертикали, горизонтали или в одну ячейку.
  • Vlookup и возврат нескольких значений из раскрывающегося списка
  • В Excel, как вы могли vlookup и возвращать несколько соответствующих значений из раскрывающегося списка, что означает, что когда вы выбираете один элемент из раскрывающегося списка, все его относительные значения отображаются одновременно. В этой статье я расскажу о решении шаг за шагом.

Лучшие инструменты для офисной работы

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

Улучшите свои навыки работы с Excel с помощью Kutools for Excel и почувствуйте эффективность, как никогда раньше. Kutools for Excel предлагает более 300 расширенных функций для повышения производительности и экономии времени.  Нажмите здесь, чтобы получить функцию, которая вам нужна больше всего...

Описание


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 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