Bỏ qua nội dung chính

Làm cách nào để vlookup trả về nhiều giá trị trong một ô trong Excel?

Thông thường, trong Excel, khi bạn sử dụng hàm VLOOKUP, nếu có nhiều giá trị khớp với tiêu chí, bạn chỉ có thể lấy giá trị đầu tiên. Tuy nhiên, đôi khi, bạn muốn trả lại tất cả các giá trị tương ứng đáp ứng tiêu chí vào một ô như ảnh chụp màn hình sau đây, bạn có thể giải quyết nó như thế nào?

Vlookup để trả về nhiều giá trị vào một ô với hàm TEXTJOIN (Excel 2019 và Office 365)

Vlookup để trả về nhiều giá trị vào một ô với chức năng do người dùng xác định

Vlookup để trả về nhiều giá trị vào một ô với một tính năng hữu ích


Vlookup để trả về nhiều giá trị vào một ô với hàm TEXTJOIN (Excel 2019 và Office 365)

Nếu bạn có phiên bản Excel cao hơn, chẳng hạn như Excel 2019 và Office 365, có một chức năng mới - KẾT NỐI, với chức năng mạnh mẽ này, bạn có thể nhanh chóng vlookup và trả về tất cả các giá trị phù hợp vào một ô.

Vlookup để trả về tất cả các giá trị phù hợp vào một ô

Vui lòng áp dụng công thức dưới đây vào một ô trống mà bạn muốn đặt kết quả, sau đó nhấn Ctrl + Shift + Enter các phím với nhau để nhận được kết quả đầu tiên, sau đó kéo chốt điền xuống ô bạn muốn sử dụng công thức này và bạn sẽ nhận được tất cả các giá trị tương ứng như hình minh họa bên dưới:

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

Lưu ý: Trong công thức trên, A2: A11 là phạm vi tra cứu chứa dữ liệu tra cứu, E2 là giá trị tra cứu, C2: C11 là phạm vi dữ liệu mà bạn muốn trả về các giá trị phù hợp, ","là dấu phân cách để tách nhiều bản ghi.

Vlookup để trả về tất cả các giá trị phù hợp mà không có bản sao vào một ô

Nếu bạn muốn trả lại tất cả các giá trị phù hợp dựa trên dữ liệu tra cứu mà không bị trùng lặp, công thức dưới đây có thể giúp bạn.

Vui lòng sao chép và dán công thức sau vào một ô trống, sau đó nhấn Ctrl + Shift + Enter các phím lại với nhau để có được kết quả đầu tiên, sau đó sao chép công thức này để điền vào các ô khác và bạn sẽ nhận được tất cả các giá trị tương ứng mà không có các giá trị khác biệt như ảnh chụp màn hình bên dưới:

=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, ""))

Lưu ý: Trong công thức trên, A2: A11 là phạm vi tra cứu chứa dữ liệu tra cứu, E2 là giá trị tra cứu, C2: C11 là phạm vi dữ liệu mà bạn muốn trả về các giá trị phù hợp, ","là dấu phân cách để tách nhiều bản ghi.

Vlookup để trả về nhiều giá trị vào một ô với chức năng do người dùng xác định

Hàm TEXTJOIN ở trên chỉ khả dụng cho Excel 2019 và Office 365, nếu bạn có các phiên bản Excel khác thấp hơn, bạn nên sử dụng một số mã để hoàn thành tác vụ này.

Vlookup để trả về tất cả các giá trị phù hợp vào một ô

1. Giữ ALT + F11 chìa khóa và nó mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. Nhấp chuột Chèn > Mô-đunvà dán mã sau vào Cửa sổ mô-đun.

Mã VBA: Vlookup để trả về nhiều giá trị vào một ô

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. Sau đó, lưu và đóng mã này, quay lại trang tính và nhập công thức này: =CONCATENATEIF($A$2:$A$11, E2, $C$2:$C$11, ", ") vào một ô trống cụ thể nơi bạn muốn đặt kết quả, sau đó kéo chốt điền xuống để nhận tất cả các giá trị tương ứng trong một ô mà bạn muốn, xem ảnh chụp màn hình:

Lưu ý: Trong công thức trên, A2: A11 là phạm vi tra cứu chứa dữ liệu tra cứu, E2 là giá trị tra cứu, C2: C11 là phạm vi dữ liệu mà bạn muốn trả về các giá trị phù hợp, ","là dấu phân cách để tách nhiều bản ghi.

Vlookup để trả về tất cả các giá trị phù hợp mà không có bản sao vào một ô

Để bỏ qua các bản sao trong các giá trị phù hợp được trả về, vui lòng thực hiện với mã bên dưới.

1. Giữ Alt + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. Nhấp chuột Chèn > Mô-đunvà dán mã sau vào Cửa sổ mô-đun.

Mã VBA: Vlookup và trả về nhiều giá trị phù hợp duy nhất vào một ô

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. Sau khi chèn mã, hãy nhấp vào CÔNG CỤ > dự án trong mở Microsoft Visual Basic cho các ứng dụng cửa sổ, và sau đó, trong cửa sổ bật ra Tài liệu tham khảo - VBAProject hộp thoại, kiểm tra Thời gian chạy tập lệnh của Microsoft tùy chọn trong Tài liệu tham khảo có sẵn hộp danh sách, xem ảnh chụp màn hình:

4. Sau đó nhấn vào OK để đóng hộp thoại, lưu và đóng cửa sổ mã, quay lại trang tính và nhập công thức này: =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:

Lưu ý: Trong công thức trên, A2: C11 là phạm vi dữ liệu bạn muốn sử dụng, E2 là giá trị tra cứu, số 3 là số cột chứa các giá trị trả về.

Vlookup để trả về nhiều giá trị vào một ô với một tính năng hữu ích

 Nếu bạn có của chúng tôi Kutools cho Excel, Với khả Các hàng kết hợp nâng cao tính năng này, bạn có thể nhanh chóng hợp nhất hoặc kết hợp các hàng dựa trên cùng một giá trị và thực hiện một số phép tính khi bạn cần.

Lưu ý:Để áp dụng điều này Các hàng kết hợp nâng cao, trước tiên, bạn nên tải xuống Kutools cho Excel, và sau đó áp dụng tính năng một cách nhanh chóng và dễ dàng.

Sau khi cài đặt Kutools cho Excel, vui lòng làm như sau:

1. Chọn phạm vi dữ liệu mà bạn muốn kết hợp dữ liệu một cột dựa trên một cột khác.

2. Nhấp chuột Kutools > Hợp nhất & Tách > Các hàng kết hợp nâng cao, xem ảnh chụp màn hình:

3. Trong cửa sổ bật ra Các hàng kết hợp nâng cao hộp thoại:

  • Bấm vào tên cột chính được kết hợp dựa trên, sau đó bấm Khóa chính
  • Sau đó nhấp vào một cột khác mà bạn muốn kết hợp dữ liệu của nó dựa trên cột chính và nhấp vào Kết hợp để chọn một dấu phân tách để tách dữ liệu kết hợp.

4. Sau đó nhấn vào OK và bạn sẽ nhận được các kết quả sau:

Tải xuống và dùng thử miễn phí Kutools cho Excel ngay!


Các bài viết tương đối hơn:

  • Hàm VLOOKUP với một số ví dụ cơ bản và nâng cao
  • Trong Excel, hàm VLOOKUP là một hàm mạnh mẽ đối với hầu hết người dùng Excel, được sử dụng để tìm kiếm giá trị ở ngoài cùng bên trái của phạm vi dữ liệu và trả về giá trị khớp trong cùng một hàng từ cột bạn đã chỉ định. Hướng dẫn này nói về cách sử dụng hàm VLOOKUP với một số ví dụ cơ bản và nâng cao trong Excel.
  • Trả lại nhiều giá trị phù hợp dựa trên một hoặc nhiều tiêu chí
  • Thông thường, hầu hết chúng ta đều dễ dàng tra cứu một giá trị cụ thể và trả về mục phù hợp bằng cách sử dụng hàm VLOOKUP. Tuy nhiên, bạn đã bao giờ cố gắng trả về nhiều giá trị phù hợp dựa trên một hoặc nhiều tiêu chí chưa? Trong bài viết này, tôi sẽ giới thiệu một số công thức để giải quyết công việc phức tạp này trong Excel.
  • Vlookup và trả lại nhiều giá trị theo chiều dọc
  • Thông thường, bạn có thể sử dụng hàm Vlookup để nhận giá trị tương ứng đầu tiên, nhưng đôi khi, bạn muốn trả về tất cả các bản ghi phù hợp dựa trên một tiêu chí cụ thể. Bài viết này, tôi sẽ nói về cách vlookup và trả về tất cả các giá trị phù hợp theo chiều dọc, chiều ngang hoặc vào một ô duy nhất.
  • Vlookup và trả lại nhiều giá trị từ danh sách thả xuống
  • Trong Excel, làm thế nào bạn có thể vlookup và trả về nhiều giá trị tương ứng từ danh sách thả xuống, có nghĩa là khi bạn chọn một mục từ danh sách thả xuống, tất cả các giá trị tương đối của nó được hiển thị cùng một lúc. Bài viết này, tôi sẽ giới thiệu giải pháp từng bước.

Công cụ năng suất văn phòng tốt nhất

🤖 Trợ lý AI của Kutools: Cách mạng hóa việc phân tích dữ liệu dựa trên: Thực thi thông minh   |  Tạo mã  |  Tạo công thức tùy chỉnh  |  Phân tích dữ liệu và tạo biểu đồ  |  Gọi các hàm Kutools...
Các tính năng phổ biến: Tìm, đánh dấu hoặc xác định các bản sao   |  Xóa hàng trống   |  Kết hợp các cột hoặc ô mà không làm mất dữ liệu   |   Vòng không có công thức hữu ích. Cảm ơn !
Siêu tra cứu: Nhiều tiêu chí VLookup    VLookup Nhiều Giá Trị  |   VLookup trên nhiều trang tính   |   Tra cứu mờ ....
Danh sách thả xuống nâng cao: Tạo nhanh danh sách thả xuống   |  Danh sách thả xuống phụ thuộc   |  Danh sách thả xuống nhiều lựa chọn ....
Trình quản lý cột: Thêm một số cột cụ thể  |  Di chuyển cột  |  Chuyển đổi trạng thái hiển thị của các cột ẩn  |  So sánh dãy và cột hữu ích. Cảm ơn !
Các tính năng nổi bật: Tiêu điểm lưới   |  Chế độ xem thiết kế   |   Thanh công thức lớn    Trình quản lý sổ làm việc & trang tính   |  Thư viện tài nguyên (Văn bản tự động)   |  Bảng chọn ngày   |  Kết hợp các bảng tính   |  Mã hóa/Giải mã ô    Gửi email theo danh sách   |  Siêu lọc   |   Bộ lọc đặc biệt (lọc in đậm/nghiêng/gạch ngang...) ...
15 bộ công cụ hàng đầu12 bản văn CÔNG CỤ (thêm văn bản, Xóa ký tự,...)   |   50 + Biểu đồ Các loại (Biểu đồ Gantt,...)   |   40+ Thực tế Công thức (Tính tuổi dựa trên ngày sinh,...)   |   19 chèn CÔNG CỤ (Chèn mã QR, Chèn ảnh từ đường dẫn,...)   |   12 Chuyển đổi CÔNG CỤ (Số thành từ, Chuyển đổi tiền tệ,...)   |   7 Hợp nhất & Tách CÔNG CỤ (Các hàng kết hợp nâng cao, Chia ô,...)   |   ... và nhiều hơn nữa

Nâng cao kỹ năng Excel của bạn với Kutools for Excel và trải nghiệm hiệu quả hơn bao giờ hết. Kutools for Excel cung cấp hơn 300 tính năng nâng cao để tăng năng suất và tiết kiệm thời gian.  Bấm vào đây để có được tính năng bạn cần nhất...

Mô tả


Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
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