google-sheets
Hàm UNIQUE và SORT trong Google Sheets: lọc trùng, sắp xếp tự động

Muốn có danh sách không trùng lặp và tự sắp xếp mỗi khi nhập thêm dữ liệu, bạn chỉ cần một công thức: =SORT(UNIQUE(B2:B)). UNIQUE lấy các giá trị khác nhau, SORT xếp chúng theo thứ tự, và kết quả tự cập nhật khi bảng gốc thay đổi, không cần bấm lọc hay xóa trùng lại.
Bài này hướng dẫn từng hàm trên bảng đơn hàng cụ thể, rồi đi tiếp các trường hợp hay gặp trong thực tế: bỏ ô trống khỏi kết quả, xử lý tên gõ thừa khoảng trắng, sắp xếp danh sách học sinh theo tên chứ không theo họ, và lấy top N bằng SORTN.
Dữ liệu mẫu dùng trong bài
Sheet DonHang, dữ liệu từ dòng 2, mỗi ngày nhân viên nhập thêm dòng mới ở cuối:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Ngày | Khách hàng | Sản phẩm | Số lượng | Thành tiền | Nhân viên |
| 2 | 01/10/2026 | Nguyễn Văn An | Bút bi | 20 | 100.000 | Hoa |
| 3 | 01/10/2026 | Trần Thị Bình | Vở 200 trang | 10 | 150.000 | Minh |
| 4 | 02/10/2026 | Nguyễn Văn An | Thước kẻ | 15 | 75.000 | Hoa |
| 5 | 03/10/2026 | Lê Văn Cường | Bút bi | 50 | 250.000 | Minh |
Các công thức bên dưới đặt ở một vùng trống, ví dụ cột H trở đi, hoặc ở một sheet báo cáo riêng.
Lưu ý dấu phân cách: bài viết dùng dấu phẩy , giữa các đối số. Nếu Google Sheets báo lỗi phân tích công thức (tùy cài đặt vùng của bảng tính), hãy thay bằng dấu chấm phẩy ;.
Hàm UNIQUE: lấy danh sách không trùng
Cú pháp
=UNIQUE(range, [by_column], [exactly_once])
range: vùng cần lọc trùng.by_column(tùy chọn):FALSE(mặc định) so sánh theo dòng;TRUEso sánh theo cột, dùng khi dữ liệu nằm ngang.exactly_once(tùy chọn):FALSE(mặc định) lấy mỗi giá trị một lần;TRUEchỉ lấy những giá trị xuất hiện đúng một lần.
Ví dụ 1: danh sách khách hàng không trùng
Gõ vào ô H2:
=UNIQUE(B2:B)
Kết quả "tràn" xuống các ô bên dưới: Nguyễn Văn An, Trần Thị Bình, Lê Văn Cường. Dùng vùng mở B2:B (không ghi số dòng cuối) để khách mới nhập ở dòng 500 vẫn được tính.
Ví dụ 2: tổ hợp không trùng trên nhiều cột
=UNIQUE(B2:C)
Trả về các cặp Khách hàng – Sản phẩm khác nhau. Hai dòng chỉ bị coi là trùng khi giống nhau ở tất cả các cột trong vùng. Cách này hữu ích để biết mỗi khách đã từng mua những mặt hàng nào.
Ví dụ 3: khách chỉ mua đúng một lần
=UNIQUE(B2:B, FALSE, TRUE)
Đối số thứ ba TRUE khiến Nguyễn Văn An (mua 2 lần) bị loại, chỉ còn khách mua đúng một lần. Đây là danh sách nên gọi chăm sóc lại để khách quay lại mua tiếp. Tính năng này hay bị bỏ qua vì nhiều người chỉ biết UNIQUE dạng một đối số.
Hàm SORT: sắp xếp tự động
Cú pháp
=SORT(range, sort_column, is_ascending, [sort_column2, is_ascending2, ...])
range: vùng cần sắp xếp.sort_column: số thứ tự cột trong vùng (cột đầu tiên của vùng là 1), hoặc một vùng một cột riêng có cùng số dòng.is_ascending:TRUEtăng dần (A→Z, nhỏ→lớn),FALSEgiảm dần.- Có thể thêm nhiều cặp cột – chiều sắp xếp để phân định khi trùng giá trị.
Ví dụ 4: đơn hàng giá trị lớn nhất lên đầu
=SORT(A2:F, 5, FALSE)
Cột Thành tiền là cột thứ 5 của vùng A2:F (A=1, B=2, C=3, D=4, E=5), FALSE là giảm dần.
Ví dụ 5: sắp theo nhân viên, trong mỗi nhân viên sắp theo thành tiền
=SORT(A2:F, 6, TRUE, 5, FALSE)
Đơn của Hoa đứng trước Minh (cột 6 tăng dần); trong đơn của từng người, đơn lớn đứng trước (cột 5 giảm dần). Dùng để mỗi nhân viên nhìn ngay danh sách đơn của mình.
Kết hợp SORT + UNIQUE và bỏ ô trống
Công thức phổ biến nhất:
=SORT(UNIQUE(B2:B))
Nhưng vì B2:B gồm cả hàng nghìn ô trống phía dưới, UNIQUE sẽ coi "ô trống" là một giá trị và kết quả có thêm một dòng trống. Cách làm gọn hơn là lọc bỏ ô trống trước bằng FILTER:
=SORT(UNIQUE(FILTER(B2:B, B2:B<>"")))
Đọc từ trong ra ngoài: FILTER(B2:B, B2:B<>"") giữ lại các ô có dữ liệu → UNIQUE bỏ trùng → SORT xếp A→Z. Khi chỉ có một cột, SORT không cần đối số thứ hai.
Áp dụng tương tự cho bảng nhiều cột: =SORT(FILTER(A2:F, A2:A<>""), 5, FALSE).
Phần nâng cao 1: tên gõ thừa khoảng trắng, khác hoa thường
Đây là lý do số 1 khiến "danh sách không trùng" vẫn có hai dòng trông giống hệt nhau. Trang hỗ trợ của Google cũng lưu ý: nếu UNIQUE trả về dòng có vẻ trùng, hãy kiểm tra khoảng trắng thừa ở cuối ô.
Ngoài ra, UNIQUE trong Google Sheets phân biệt chữ hoa, chữ thường: "nguyễn văn an" và "Nguyễn Văn An" là hai giá trị khác nhau (khác với hàm UNIQUE của Excel, vốn không phân biệt).
Công thức chuẩn hóa trước khi lọc trùng:
=ARRAYFORMULA(SORT(UNIQUE(FILTER(PROPER(TRIM(B2:B)), B2:B<>""))))
TRIMxóa khoảng trắng ở đầu, cuối và gộp các khoảng trắng lặp giữa các từ thành một.PROPERviết hoa chữ cái đầu mỗi từ, đưa mọi cách gõ về một dạng chung.ARRAYFORMULAcho phép TRIM và PROPER xử lý cả cột cùng lúc.
Công thức này chỉ chuẩn hóa kết quả hiển thị. Về lâu dài, nên dùng danh sách thả xuống (dropdown) cho cột Khách hàng để người nhập không gõ mỗi người một kiểu. Danh sách cho dropdown có thể lấy luôn từ kết quả của công thức SORT(UNIQUE(...)) ở trên: chọn Dropdown (from a range) và trỏ tới cột kết quả.
Phần nâng cao 2: sắp xếp danh sách học sinh theo tên, không theo họ
Người Việt sắp danh sách lớp theo tên (chữ cuối), nhưng SORT trên cột Họ tên lại xếp theo họ, nên cả lớp "Nguyễn" dồn một chỗ. Bảng điểm có cột A = STT, B = Họ và tên, C = Điểm, dữ liệu từ dòng 2 đến dòng 40:
=ARRAYFORMULA(SORT(B2:C40, REGEXEXTRACT(B2:B40, "\S+$"), TRUE, B2:B40, TRUE))
Giải thích:
REGEXEXTRACT(B2:B40, "\S+$")lấy từ cuối cùng của họ tên ("An", "Bình", "Cường").\S+là một chuỗi ký tự không chứa khoảng trắng,$là cuối chuỗi.- Vùng tên vừa tách được dùng làm cột sắp xếp thứ nhất. SORT cho phép cột sắp xếp nằm ngoài vùng dữ liệu, miễn là có cùng số dòng.
- Cột sắp xếp thứ hai là cả họ tên, để hai bạn cùng tên "An" được xếp tiếp theo họ, tên đệm.
Lưu ý: dùng vùng có số dòng cố định (B2:B40) và không để ô trống giữa danh sách, vì REGEXEXTRACT báo lỗi với ô trống. STT nên đánh lại sau khi sắp xếp, ví dụ =SEQUENCE(COUNTA(B2:B40)) ở cột bên cạnh kết quả.
Phần nâng cao 3: SORTN lấy top N và lấy đơn mới nhất của mỗi khách
SORTN là "người anh em" của SORT, chỉ trả về N dòng đầu sau khi sắp xếp:
=SORTN(range, [n], [display_ties_mode], [sort_column1, is_ascending1], ...)
Top 5 đơn hàng lớn nhất:
=SORTN(FILTER(A2:F, A2:A<>""), 5, 0, 5, FALSE)
Số 0 là chế độ mặc định: lấy tối đa 5 dòng. Nếu muốn lấy thêm các đơn bằng đúng giá trị đơn thứ 5 (đồng hạng), đổi 0 thành 1.
Mỗi khách lấy một đơn gần nhất (dùng để biết lần cuối khách mua là khi nào):
=SORTN(SORT(FILTER(A2:F, A2:A<>""), 1, FALSE), 9^9, 2, 2, TRUE)
SORT(..., 1, FALSE): xếp đơn theo ngày mới nhất lên đầu.SORTN(..., 9^9, 2, 2, TRUE): chế độ2bỏ các dòng trùng theo cột sắp xếp (cột 2 = Khách hàng), chỉ giữ dòng đầu tiên của mỗi khách, chính là đơn mới nhất.9^9là một số rất lớn, nghĩa là "không giới hạn số dòng".
Kết quả được xếp theo tên khách A→Z, mỗi khách một dòng kèm ngày, sản phẩm, thành tiền của lần mua gần nhất.
Mẹo: bảng tổng hợp doanh thu theo khách chỉ với 2 công thức
- Ô
H2:=SORT(UNIQUE(FILTER(B2:B, B2:B<>"")))— danh sách khách. - Ô
I2:=ARRAYFORMULA(IF(H2:H="", , SUMIF(B2:B, H2:H, E2:E)))— tổng thành tiền từng khách. - Ô
H1:=COUNTUNIQUE(B2:B)nếu cần biết tổng số khách.
Khách mới nhập vào sheet gốc sẽ tự xuất hiện ở bảng tổng hợp. Khi cần nhóm theo nhiều tiêu chí hơn (theo tháng, theo nhân viên), hàm QUERY sẽ gọn hơn.
Lỗi thường gặp
#REF! – "Array result was not expanded because it would overwrite data in..." Nguyên nhân: vùng kết quả cần tràn xuống đang có dữ liệu. Cách sửa: xóa hết các ô bên dưới và bên phải ô chứa công thức, hoặc đặt công thức ở cột trống.
Kết quả có một dòng trống. Nguyên nhân: vùng mở B2:B chứa ô trống. Cách sửa: bọc FILTER(B2:B, B2:B<>"") như hướng dẫn.
Vẫn còn tên trùng. Nguyên nhân: khoảng trắng thừa hoặc khác hoa thường. Cách sửa: dùng công thức TRIM + PROPER ở phần nâng cao 1.
#N/A – "No matches are found in FILTER evaluation". Nguyên nhân: cột nguồn chưa có dữ liệu nào. Cách sửa: bọc ngoài bằng IFERROR(..., "").
Số và chữ số bị coi là khác nhau. Ví dụ mã "001" dạng văn bản và 1 dạng số. Google khuyên định dạng số thống nhất trong cả cột trước khi lọc trùng.
Không sửa được một ô trong kết quả. Kết quả là mảng do công thức sinh ra; gõ đè vào sẽ làm công thức báo lỗi #REF!. Nếu cần bản tĩnh để chỉnh tay, copy vùng kết quả rồi Ctrl + Shift + V (dán chỉ giá trị) sang chỗ khác.
Chuyển công thức sang Excel bị sai. Hàm SORT của Excel có cú pháp khác (SORT(array, sort_index, sort_order) với 1 / -1 thay cho TRUE / FALSE) và muốn sắp theo nhiều cột phải dùng mảng hằng như {6,5} hoặc hàm SORTBY. Với Excel, xem bài hàm FILTER trong Excel và cách xóa dữ liệu trùng lặp trong Excel.
Bảng tóm tắt công thức
| Nhu cầu | Công thức |
|---|---|
| Danh sách không trùng | =UNIQUE(B2:B) |
| Không trùng, xếp A→Z, bỏ ô trống | =SORT(UNIQUE(FILTER(B2:B, B2:B<>""))) |
| Tổ hợp không trùng nhiều cột | =UNIQUE(B2:C) |
| Giá trị chỉ xuất hiện 1 lần | =UNIQUE(B2:B, FALSE, TRUE) |
| Sắp xếp giảm dần theo cột 5 | =SORT(A2:F, 5, FALSE) |
| Sắp theo 2 cột | =SORT(A2:F, 6, TRUE, 5, FALSE) |
| Chuẩn hóa tên trước khi lọc | =ARRAYFORMULA(SORT(UNIQUE(FILTER(PROPER(TRIM(B2:B)), B2:B<>"")))) |
| Xếp học sinh theo tên | =ARRAYFORMULA(SORT(B2:C40, REGEXEXTRACT(B2:B40, "\S+$"), TRUE, B2:B40, TRUE)) |
| Top 5 | =SORTN(FILTER(A2:F, A2:A<>""), 5, 0, 5, FALSE) |
| Đơn mới nhất mỗi khách | =SORTN(SORT(FILTER(A2:F, A2:A<>""), 1, FALSE), 9^9, 2, 2, TRUE) |
| Đếm số giá trị khác nhau | =COUNTUNIQUE(B2:B) |
Học Google Sheets thực chiến
UNIQUE, SORT, FILTER và QUERY là bộ hàm giúp bảng tính tự cập nhật báo cáo mà không cần thao tác tay mỗi ngày. Khóa học Google Sheets tại Điền Nguyễn AZ thực hành trên chính dữ liệu bán hàng, chấm công, quản lý học sinh của học viên, học trực tiếp tại TP Vinh hoặc online qua Zoom.
📞 Hotline / Zalo: 0362 465 361
👉 Xem chi tiết: Khóa học Google Sheets
Tài liệu miễn phí
30 phím tắt Excel hay dùng nhất
Tổng hợp phím tắt giúp thao tác Excel nhanh hơn — điền thông tin để tải file PDF miễn phí về dùng ngay.
Bài viết liên quan

31/10/2026
Tạo PDF hàng loạt từ Google Sheets bằng Apps Script và tự gửi email
Tự động tạo PDF hàng loạt từ Google Sheets bằng Apps Script: mỗi nhân viên một phiếu lương PDF, lưu Drive, gửi email đính kèm, có chế độ chạy thử và mã mẫu.

31/10/2026
Hàm FILTER trong Google Sheets: lọc nhiều điều kiện, tự cập nhật
Cách dùng hàm FILTER trong Google Sheets lọc nhiều điều kiện AND, OR, theo khoảng ngày, chứa từ khóa, theo danh sách và làm báo cáo chọn nhân viên tự cập nhật.

22/10/2026
9 mẹo tăng tốc độ làm việc với Google Sheets ai cũng nên biết
Tổng hợp các mẹo thực tế giúp làm việc với Google Sheets nhanh hơn: phím tắt, tự động điền, lọc dữ liệu, Named Range và cách tránh file nặng gây lag.