Bỏ qua nội dung chính

Làm cách nào để trích xuất các giá trị duy nhất từ ​​nhiều cột trong Excel?

Giả sử bạn có một số cột với nhiều giá trị, một số giá trị được lặp lại trong cùng một cột hoặc cột khác nhau. Và bây giờ bạn muốn tìm các giá trị chỉ xuất hiện trong một trong hai cột một lần. Có thủ thuật nhanh nào để bạn trích xuất các giá trị duy nhất từ ​​nhiều cột trong Excel không?


Trích xuất các giá trị duy nhất từ ​​nhiều cột bằng công thức

Phần này sẽ đề cập đến hai công thức: một công thức sử dụng công thức mảng phù hợp với tất cả các phiên bản Excel và một công thức khác sử dụng công thức mảng động dành riêng cho Excel 365.

Trích xuất các giá trị duy nhất từ ​​nhiều cột bằng công thức Mảng cho tất cả các phiên bản Excel

Đối với người dùng có bất kỳ phiên bản Excel nào, công thức mảng có thể là một công cụ mạnh mẽ để trích xuất các giá trị duy nhất trên nhiều cột. Đây là cách bạn có thể làm điều đó:

1. Giả sử các giá trị của bạn trong phạm vi A2:C9, vui lòng nhập công thức sau vào ô E2:

=INDIRECT(TEXT(MIN(IF(($A$2:$C$9<>"")*(COUNTIF($E$1:E1,$A$2:$C$9)=0),ROW($2:$9)*100+COLUMN($A:$C),7^8)),"R0C00"),)&""
Chú thích: Trong công thức trên, A2: C9 cho biết phạm vi ô mà bạn muốn trích xuất các giá trị duy nhất, E1: E1 là ô đầu tiên của cột bạn muốn đặt kết quả, $ 2: $ 9 đứng đằng sau các hàng chứa các ô bạn muốn sử dụng và $ A: $ C cho biết các cột chứa các ô bạn muốn sử dụng. Vui lòng thay đổi chúng thành của riêng bạn.

2. Sau đó nhấn Shift + Ctrl + Nhập các phím với nhau, rồi kéo chốt điền để trích xuất các giá trị duy nhất cho đến khi các ô trống xuất hiện. Xem ảnh chụp màn hình:

Giải thích công thức này:
  1. $ A $ 2: $ C $ 9: Phần này chỉ định phạm vi dữ liệu cần kiểm tra, đó là các ô từ A2 đến C9.
  2. IF(($A$2:$C$9<>"")*(COUNTIF($E$1:E1,$A$2:$C$9)=0), ROW($2:$9)*100+COLUMN($A:$C), 7^8):
    • $A$2:$C$9<>"" kiểm tra xem các ô trong phạm vi có trống không.
    • COUNTIF($E$1:E1,$A$2:$C$9)=0 xác định xem giá trị của các ô này chưa được liệt kê trong phạm vi ô từ E1 đến E1 hay không.
    • Nếu cả hai điều kiện đều được đáp ứng (nghĩa là giá trị không trống và chưa được liệt kê trong cột E), hàm IF sẽ tính một số duy nhất dựa trên hàng và cột của nó (ROW($2:$9)*100+COLUMN($A: $C)).
    • Nếu các điều kiện không được đáp ứng, hàm sẽ trả về một số lớn (7^8), đóng vai trò giữ chỗ.
  3. PHÚT(...): Tìm số nhỏ nhất được hàm IF trả về ở trên, tương ứng với vị trí của giá trị duy nhất tiếp theo.
  4. VĂN BẢN(...,"R0C00"): Chuyển đổi số tối thiểu này thành địa chỉ kiểu R1C1. Mã định dạng R0C00 cho biết việc chuyển đổi số sang định dạng tham chiếu ô Excel.
  5. GIÁN TIẾP(...): Sử dụng hàm INDIRECT để chuyển đổi địa chỉ kiểu R1C1 được tạo ở bước trước trở lại tham chiếu ô kiểu A1 bình thường. Hàm INDIRECT cho phép tham chiếu ô dựa trên nội dung của chuỗi văn bản.
  6. &"": Việc thêm &"" vào cuối công thức sẽ đảm bảo kết quả đầu ra cuối cùng được coi là văn bản, do đó, các số chẵn sẽ được hiển thị dưới dạng văn bản.
 
Trích xuất các giá trị duy nhất từ ​​nhiều cột bằng công thức cho Excel 365

Excel 365 hỗ trợ mảng động, giúp việc trích xuất các giá trị duy nhất từ ​​nhiều cột trở nên dễ dàng hơn nhiều:

Vui lòng nhập hoặc sao chép công thức sau vào ô trống nơi bạn muốn đặt kết quả, sau đó nhấp vào đăng ký hạng mục thi key để nhận tất cả các giá trị duy nhất cùng một lúc. Xem ảnh chụp màn hình:

=UNIQUE(TOCOL(A2:C9,1))


Trích xuất các giá trị duy nhất từ ​​nhiều cột bằng Kutools AI Aide

Giải phóng sức mạnh của Trợ lý AI của Kutools để trích xuất liền mạch các giá trị duy nhất từ ​​nhiều cột trong Excel. Chỉ với một vài cú nhấp chuột, công cụ thông minh này sẽ sàng lọc dữ liệu của bạn, xác định và liệt kê các mục nhập duy nhất trên bất kỳ phạm vi đã chọn nào. Hãy quên đi những rắc rối của các công thức hoặc mã vba phức tạp; Tận dụng hiệu quả của Trợ lý AI của Kutools và biến quy trình làm việc Excel của bạn thành trải nghiệm hiệu quả hơn và không có lỗi.

Chú thích: Để sử dụng cái này Trợ lý AI của Kutools of Kutools cho Excel, Xin vui lòng tải xuống và cài đặt Kutools cho Excel đầu tiên.

Sau khi cài đặt Kutools cho Excel, vui lòng nhấp vào Kutools AI > Trợ lý AI để mở Trợ lý AI của Kutools ngăn:

  1. Nhập yêu cầu của bạn vào hộp trò chuyện và nhấp vào Gửi nút hoặc bấm đăng ký hạng mục thi chìa khóa để gửi câu hỏi;
    "Trích xuất các giá trị duy nhất từ ​​phạm vi A2:C9, bỏ qua các ô trống và đặt kết quả bắt đầu từ E2:"
  2. Sau khi phân tích nhấn Thực hiện nút để chạy. Kutools AI Aide sẽ xử lý yêu cầu của bạn bằng AI và trả về kết quả trong ô được chỉ định trực tiếp trong Excel.


Trích xuất các giá trị duy nhất từ ​​nhiều cột với Pivot Table

Nếu bạn đã quen thuộc với bảng tổng hợp, bạn có thể dễ dàng trích xuất các giá trị duy nhất tạo thành nhiều cột bằng các bước sau:

1. Lúc đầu, hãy chèn một cột trống mới ở bên trái dữ liệu của bạn, trong ví dụ này, tôi sẽ chèn cột A bên cạnh dữ liệu ban đầu.

2. Nhấp vào một ô trong dữ liệu của bạn và nhấn Alt + D các phím, sau đó nhấn P chìa khóa ngay lập tức để mở PivotTable và PivotChart Wizard, chọn Nhiều phạm vi hợp nhất trong wizard step1, xem ảnh chụp màn hình:

3. Sau đó nhấn vào Sau nút, kiểm tra Tạo một trường trang duy nhất cho tôi tùy chọn trong wizard step2, xem ảnh chụp màn hình:

4. Tiếp tục nhấp Sau , nhấp để chọn phạm vi dữ liệu bao gồm cột ô mới bên trái, sau đó nhấp Thêm để thêm dải dữ liệu vào Tất cả các phạm vi hộp danh sách, xem ảnh chụp màn hình:

5. Sau khi chọn phạm vi dữ liệu, hãy tiếp tục nhấp vào Sau, trong bước 3 của trình hướng dẫn, hãy chọn nơi bạn muốn đặt báo cáo PivotTable theo ý muốn.

6. Cuối cùng, hãy nhấp vào Kết thúc để hoàn thành trình hướng dẫn và bảng tổng hợp đã được tạo trong trang tính hiện tại, sau đó bỏ chọn tất cả các trường khỏi Chọn các trường để thêm vào báo cáo , xem ảnh chụp màn hình:

7. Sau đó kiểm tra trường Giá trị hoặc kéo Giá trị vào Hàng nhãn, bây giờ bạn sẽ nhận được các giá trị duy nhất từ ​​nhiều cột như sau:


Trích xuất các giá trị duy nhất từ ​​nhiều cột bằng mã VBA

Với mã VBA sau, bạn cũng có thể trích xuất các giá trị duy nhất từ ​​nhiều cột.

1. Giữ ALT + F11 chìa khóa và nó mở Cửa sổ Microsoft Visual Basic for Applications.

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

VBA: Trích xuất các giá trị duy nhất từ ​​nhiều cột

Sub Uniquedata()
'Updateby Extendoffice
Dim rng As Range
Dim InputRng As Range, OutRng As Range
Set dt = CreateObject("Scripting.Dictionary")
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
For Each rng In InputRng
    If rng.Value <> "" Then
        dt(rng.Value) = ""
    End If
Next
OutRng.Range("A1").Resize(dt.Count) = Application.WorksheetFunction.Transpose(dt.Keys)
End Sub

3. Sau đó nhấn F5 để chạy mã này và một hộp nhắc sẽ bật ra để nhắc bạn chọn phạm vi dữ liệu mà bạn muốn sử dụng. Xem ảnh chụp màn hình:

4. Và sau đó nhấp vào OK, một hộp nhắc nhở khác sẽ xuất hiện để bạn chọn nơi đặt kết quả, xem ảnh chụp màn hình:

5. Nhấp chuột OK để đóng hộp thoại này và tất cả các giá trị duy nhất đã được trích xuất cùng một lúc.


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

  • Đếm số lượng giá trị duy nhất và khác biệt từ một danh sách
  • Giả sử, bạn có một danh sách dài các giá trị với một số mục trùng lặp, bây giờ, bạn muốn đếm số lượng giá trị duy nhất (các giá trị chỉ xuất hiện trong danh sách một lần) hoặc các giá trị riêng biệt (tất cả các giá trị khác nhau trong danh sách, nó có nghĩa là duy nhất giá trị + giá trị trùng lặp đầu tiên) trong một cột như ảnh chụp màn hình bên trái. Bài viết này, tôi sẽ nói về cách giải quyết công việc này trong Excel.
  • Trích xuất các giá trị duy nhất dựa trên tiêu chí trong Excel
  • Giả sử, bạn có dải dữ liệu sau mà bạn chỉ muốn liệt kê các tên duy nhất của cột B dựa trên một tiêu chí cụ thể của cột A để nhận được kết quả như ảnh chụp màn hình bên dưới. Làm cách nào bạn có thể giải quyết công việc này trong Excel một cách nhanh chóng và dễ dàng?
  • Chỉ cho phép các giá trị duy nhất trong Excel
  • Nếu bạn chỉ muốn giữ lại các giá trị duy nhất nhập vào một cột của trang tính và ngăn các bản sao, bài viết này sẽ giới thiệu một số thủ thuật nhanh để bạn giải quyết công việc này.
  • Tổng giá trị duy nhất dựa trên tiêu chí trong Excel
  • Ví dụ: tôi có một dải dữ liệu chứa các cột Tên và Thứ tự, bây giờ, chỉ tính tổng các giá trị duy nhất trong cột Thứ tự dựa trên cột Tên như ảnh chụp màn hình sau. Làm thế nào để giải quyết công việc này một cách nhanh chóng và dễ dàng trong Excel?

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 (31)
Rated 5 out of 5 · 1 ratings
This comment was minimized by the moderator on the site
Thank you for this solution, however what if the columns are in separate excel sheet? or is in separate columns instead of a table?
This comment was minimized by the moderator on the site
Hello, Jon,
The methods in this article ar only works well for a range of data, if your data in separate columns, you should copy and paste them into one range first, and then apply the formula or VBA code.
Thank you!
This comment was minimized by the moderator on the site
Thank you for this great article.

For people who are using the array formular in non-English Excel there must be taken special care of the text format string: in your example: "R0C00".
For German this would translate to "Z0S00". However, "S" is a special character refering to seconds for time formating. This character needs to be escaped and therefore the correct format string for German Excel is "Z0\S00".

I hope this helps someone in the future :-)
This comment was minimized by the moderator on the site
Hello, Michael H.
Thanks for your kindly explanation.
Hope this can help others in the future.😄
This comment was minimized by the moderator on the site
Thank you for this great article.

For people who are using the array formular in non-English Excel there must be taken special care of the text format string: in your example: "R0C00".
For German this would translate to "Z0S00". However, "S" is a special character refering to seconds for time formating. This character needs to be escaped and therefore the correct format string for German Excel is "Z0\S00".

I hope this helps someone in the future :-)
This comment was minimized by the moderator on the site
Hello Sir! The VBA worked wonders, thank you very much for that! I was wondering, If I change the original data, is it possible to refresh the column with the unique values automatically?
Rated 5 out of 5
This comment was minimized by the moderator on the site
Hello Ioannis,

Glad to help. After you change the original data, the VBA can not refresh the result automatically. And the easiest way I can think of is to press Ctrl + Alt + F9 to refresh all results in worksheets in all open workbooks. Have a nice day.

Sincerely,
Mandy
This comment was minimized by the moderator on the site
The array formula at the top is working great when used with data in the same sheet, however when I try to use it to reference the same exact data from another sheet the formula returns nothing. I'm unable to figure out why. Is there a limitation with array functions that prevents you from referencing ranges in a different sheet?

Thanks for any insight you can provide.
This comment was minimized by the moderator on the site
Hello Erin,

Glad to help. The INDIRECT function in this formula is more complicated to use when referencing data in other worksheets. It is not recommended to use this feature when referencing ranges in different worksheets.

For example: Now the data is in Sheet1, I want to reference the content of cell C2 of Sheet1 in Sheet2. First, in any two cells in Sheet2, such as D1 and D2, enter Sheet1 and C2, respectively. At this point, enter the formula in the empty cell of Sheet2:
=INDIRECT("'"&D1&"'!"&D2), then the content of cell C2 in Sheet1 can be returned.

As you can see, it make things way more complex. Hope my explanation can help. Have a nice day.

Sincerely,
Mandy
This comment was minimized by the moderator on the site
Czy to żart?
This comment was minimized by the moderator on the site
can we create uniqdata function instead of macro?
This comment was minimized by the moderator on the site
Hi, İlhan,If you like a User Defined Function to create a formula for solving this problem, the below code may help you:After inserting the code, select a list of cells where you want to put the results. Then type this formula:=Uniques(A1:C4)  in the formula bar.Press Ctrl+Shift+Enter keys together. 


Function Uniques(ByVal inputRange As Range)
Dim inputArray As Variant
Dim myColl As New Collection
Dim xVal As Variant
Dim outArray() As Variant
On Error Resume Next
With inputRange
inputArray = Application.Intersect(.Cells, .Parent.UsedRange).Value
End With
On Error GoTo 0
On Error Resume Next
For Each xVal In inputArray
myColl.*** Item:=xVal, Key:=(CStr(xVal) & TypeName(xVal))
Next xVal
myColl.Remove "String"
On Error GoTo 0
ReDim outArray(1 To Application.Max(myColl.Count, Application.Caller.Cells.Count))
For xVal = 1 To UBound(outArray)
outArray(xVal) = vbNullString
Next xVal
For xVal = 1 To Application.Min(myColl.Count, Application.Caller.Cells.Count)
outArray(xVal) = myColl(xVal)
Next xVal
If Application.Caller.Columns.Count = 1 Then
Uniques = Application.Transpose(outArray)
Else
Uniques = outArray
End If
End Function
This comment was minimized by the moderator on the site
Thanks for the code. I'm using the VBA code of this page. Is there a way to add a sorting code after the unique values are extracted so it sorts it automatically?
This comment was minimized by the moderator on the site
Regarding the formula version, could you explain in more detail what this portion is doing? *100+COLUMN($A:$C),7^8)),"R0C00") Specifically, what are the *100, 7^8, and "R0C000" doing? I'm understanding everything else, but I can't figure out what these are for.
This comment was minimized by the moderator on the site
Little late for my response here but...
ROW($2:$9)*100 - this is multiplying the row number *100, so if it's in row 5, now the number is 500
COLUMN($A:$C) - this gets added to the row*100 number, so if it's row 5 col 2, then the number is 502.
7^8)), - this (I think) is to have a max value for the min statement from earlier.
"R0C00") - this formats the text based on the number. In the example, we had 502 so this gives R5C02 (row 5, col 02).

If you have a lot of columns but not many rows, then you could change it to ROW($2:$9)*1000+COLUMN($A:$C),7^8)),"R0C000")
This comment was minimized by the moderator on the site
i've adjusted to my sheet but am only returning the first value in the defined array... what am i missing?
This comment was minimized by the moderator on the site
Hello, Cody,
The above formula works well in my worksheet, could you give a screenshot of your data problem here?
Thank you!
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