Làm cách nào để so sánh các giá trị được phân tách bằng dấu phẩy trong hai ô và trả về các giá trị trùng lặp hoặc duy nhất trong Excel?
Như được hiển thị trong ảnh chụp màn hình bên dưới, có hai cột - Cột1 và Cột2, mỗi ô trong cột chứa các số được phân tách bằng dấu phẩy. Để so sánh các số được phân tách bằng dấu phẩy trong Cột 1 với nội dung ô trong cùng một hàng của Cột 2 và trả về tất cả các giá trị trùng lặp hoặc duy nhất, bạn có thể làm gì?
Hướng dẫn này cung cấp hai phương pháp để giúp bạn hoàn thành nhiệm vụ này.
So sánh các giá trị được phân tách bằng dấu phẩy trong hai ô và trả về các giá trị trùng lặp hoặc duy nhất bằng công thức
Phần này cung cấp hai công thức để giúp so sánh các giá trị được phân tách bằng dấu phẩy trong hai ô và trả về các giá trị trùng lặp hoặc duy nhất giữa chúng.
Chú thích: Các công thức sau chỉ hoạt động trong Excel cho 365. Nếu bạn đang sử dụng các phiên bản Excel khác, hãy thử sử dụng phương pháp VBA dưới đây.
Lấy hai cột trên làm ví dụ, để so sánh các số được phân tách bằng dấu phẩy trong Cột 1 với các số được phân tách bằng dấu phẩy trong cùng một hàng của Cột 2 và trả về các giá trị trùng lặp hoặc duy nhất, vui lòng thực hiện như sau.
Trả về giá trị trùng lặp
1. Chọn một ô để xuất các số trùng nhau giữa hai ô đã chỉ định với các số được phân tách bằng dấu phẩy, trong trường hợp này, tôi chọn ô D2, sau đó nhập công thức bên dưới và nhấn phím đăng ký hạng mục thi Chìa khóa. Chọn ô công thức và kéo nó Xử lý tự động điền xuống để lấy các số trùng lặp giữa các ô trong các hàng khác.
=LET(x, TRANSPOSE(TEXTSPLIT(TEXTJOIN(", ",TRUE,A2:B2), ", ")),y,UNIQUE(x),z,UNIQUE(x,,1), TEXTJOIN(", ",TRUE,IF(ISERROR(MATCH(y,z,0)),y, "")))
Trả về các giá trị duy nhất
Để trả về các số duy nhất giữa hai ô được chỉ định với các số được phân tách bằng dấu phẩy trong cùng một hàng, công thức sau có thể hữu ích.
1. Chọn một ô để xuất ra các số duy nhất, trong trường hợp này, tôi chọn ô E2, sau đó nhập công thức bên dưới và nhấn phím đăng ký hạng mục thi Chìa khóa. Chọn ô công thức và kéo nó Xử lý tự động điền xuống để lấy các số duy nhất giữa các ô trong các hàng khác.
=TEXTJOIN(", ",TRUE,UNIQUE(TRANSPOSE(TEXTSPLIT(TEXTJOIN(", ",TRUE,A2:B2), ", ")),,1))
Chú ý:
So sánh hai cột với các giá trị được phân tách bằng dấu phẩy và trả về các giá trị trùng lặp hoặc duy nhất bằng VBA
Hàm do người dùng xác định được cung cấp trong phần này giúp so sánh các giá trị được phân tách bằng dấu phẩy trong hai ô được chỉ định và trả về các giá trị trùng lặp hoặc giá trị duy nhất giữa chúng. Hãy làm như sau.
Lấy ví dụ tương tự như trên, để so sánh các số được phân tách bằng dấu phẩy trong Cột 1 với các số được phân tách bằng dấu phẩy trong cùng một hàng của Cột 2 và trả về các giá trị trùng lặp hoặc duy nhất, vui lòng thử hàm do người dùng xác định trong phần này.
1. Trong sổ làm việc đang mở, nhấn nút Khác + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.
2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp Chèn > Mô-đunvà sao chép mã VBA sau vào Mô-đun (Mã) cửa sổ.
Mã VBA: So sánh các giá trị được phân tách bằng dấu phẩy trong hai ô và trả về các giá trị trùng lặp/duy nhất
Private Function COMPARE(Rng1, Rng2 As Range, Op As Boolean)
'Updated by Extendoffice 20221019
Dim R1Arr As Variant
Dim R2Arr As Variant
Dim Ans1 As String
Dim Ans2 As String
Dim Separator As String
Dim d1 As New Dictionary
Dim d2 As New Dictionary
Dim d3 As New Dictionary
Application.Volatile
Separator = ", "
R1Arr = Split(Rng1.Value, Separator)
R2Arr = Split(Rng2.Value, Separator)
Ans1 = ""
Ans2 = ""
For Each ch In R2Arr
If Not d2.Exists(ch) Then
d2.Add ch, "1"
End If
Next
If Op Then
For Each ch In R1Arr
If d2.Exists(ch) Then
If Not d3.Exists(ch) Then
d3.Add ch, "1"
Ans1 = Ans1 & ch & Separator
End If
End If
Next
If Ans1 <> "" Then
Ans1 = Mid(Ans1, 1, Len(Ans1) - Len(Separator))
End If
COMPARE = Ans1
Else
For Each ch In R1Arr
If Not d1.Exists(ch) Then
d1.Add ch, "1"
End If
Next
For Each ch In R1Arr
If Not d2.Exists(ch) Then
If Not d3.Exists(ch) Then
d3.Add ch, "1"
Ans2 = Ans2 & ch & Separator
End If
End If
Next
For Each ch In R2Arr
If Not d1.Exists(ch) Then
If Not d3.Exists(ch) Then
d3.Add ch, "1"
Ans2 = Ans2 & ch & Separator
End If
End If
Next
If Ans2 <> "" Then
Ans2 = Mid(Ans2, 1, Len(Ans2) - Len(Separator))
End If
COMPARE = Ans2
End If
End Function
3. Sau khi dán mã vào Mô-đun (Mã) cửa sổ, hãy nhấp vào CÔNG CỤ > dự án để mở Tài liệu tham khảo - VBAProject cửa sổ, kiểm tra Thời gian chạy tập lệnh của Microsoft hộp và sau đó nhấp vào OK .
4. Nhấn nút Khác + Q chìa khóa để đóng Microsoft Visual Basic cho các ứng dụng cửa sổ.
5. Bây giờ, bạn cần áp dụng hai hàm riêng biệt để trả về các giá trị trùng lặp và duy nhất từ hai ô giá trị được phân tách bằng dấu phẩy.
Trả về giá trị trùng lặp
Chọn một ô để xuất ra các số trùng lặp, trong ví dụ này tôi chọn ô D2, sau đó nhập công thức bên dưới và nhấn phím đăng ký hạng mục thi phím để lấy các số trùng lặp giữa ô A2 và B2.
Chọn ô công thức và kéo Bộ điều khiển Tự động Điền của nó xuống để lấy các số trùng lặp giữa các ô trong các hàng khác.
=COMPARE(A2,B2,TRUE)
Trả về các giá trị duy nhất
Chọn một ô để xuất ra các số duy nhất, trong ví dụ này, tôi chọn ô E2, sau đó nhập công thức bên dưới và nhấn phím đăng ký hạng mục thi để lấy các số duy nhất giữa ô A2 và B2.
Chọn ô công thức và kéo Bộ điều khiển Tự động Điền của nó xuống để lấy các số duy nhất giữa các ô trong các hàng khác.
=COMPARE(A2,B2,FALSE)
Công cụ năng suất văn phòng tốt nhất
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...
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!