Có thể bạn quan tâm: Phần Mềm Chuyển Đổi Pdf Sang Excel: Giải Pháp Hoàn Hảo Cho Công Việc Xử Lý Dữ Liệu
Mở đầu
Trong công việc xử lý dữ liệu, việc gặp phải các bản ghi trùng lặp là điều không thể tránh khỏi. Đặc biệt khi chúng ta làm việc với Excel – một trong những công cụ phổ biến nhất để quản lý và phân tích dữ liệu – những dòng dữ liệu lặp lại không chỉ làm giảm tính chính xác của báo cáo mà còn làm tăng thời gian xử lý, gây nhầm lẫn cho người dùng. Vì vậy, việc biết cách remove duplicate rows in Excel (xóa dòng trùng lặp trong Excel) một cách hiệu quả là một kỹ năng thiết yếu đối với mọi người làm việc với bảng tính.
Bài viết này sẽ cung cấp cho bạn một hướng dẫn chi tiết, từ các phương pháp cơ bản sử dụng tính năng tích hợp sẵn trong Excel, đến các kỹ thuật nâng cao bằng công cụ Power Query, VBA và thậm chí là công thức mảng. Bạn sẽ được học cách:
- Xác định và đánh dấu các dòng trùng lặp.
- Xóa các dòng trùng lặp một cách nhanh chóng.
- Giữ lại một bản sao dữ liệu gốc để tránh mất mát thông tin.
- Xử lý các trường hợp phức tạp như trùng lặp một phần, trùng lặp dựa trên nhiều cột, và trùng lặp trong các bảng dữ liệu lớn.
- Tự động hoá quy trình xóa trùng lặp bằng macro VBA.
Hãy cùng bắt đầu hành trình làm sạch dữ liệu của bạn!
Có thể bạn quan tâm: Personal Finance Manager Excel Template: Hướng Dẫn Chi Tiết Từ A Đến Z Để Kiểm Soát Tài Chính Cá Nhân Hiệu Quả
1. Hiểu Rõ Khái Niệm “Duplicate Row” trong Excel
1.1 Định Nghĩa
Một dòng trùng lặp (duplicate row) trong Excel là một hàng chứa cùng một tập hợp giá trị ở các cột được xem xét. Tùy vào mục tiêu, bạn có thể:
- Xem xét tất cả các cột trong bảng để quyết định một hàng có trùng hay không.
- Chỉ xét một hoặc một nhóm cột (ví dụ: chỉ dựa trên cột “Mã khách hàng” hoặc “Tên + Ngày sinh”).
1.2 Nguyên Nhân Gây Ra Dòng Trùng Lặp
- Nhập dữ liệu từ nhiều nguồn: Khi ghép dữ liệu từ các file CSV, database hay hệ thống ERP, thường có các bản ghi lặp lại.
- Sao chép – dán: Người dùng vô tình sao chép một vùng dữ liệu và dán lại.
- Quá trình import/export: Định dạng không đồng nhất có thể tạo ra bản sao không mong muốn.
- Lỗi trong quá trình thu thập dữ liệu: Nhân viên nhập liệu có thể nhập cùng một thông tin nhiều lần.
Hiểu được nguyên nhân sẽ giúp bạn thiết lập các quy tắc kiểm soát dữ liệu để giảm thiểu tình trạng trùng lặp trong tương lai.
Có thể bạn quan tâm: File Excel Nhập Xuất Tồn Đơn Giản: Hướng Dẫn Từ A Đến Z Để Quản Lý Kho Hiệu Quả
2. Phương Pháp Cơ Bản: Sử Dụng Tính Năng “Remove Duplicates”
Excel cung cấp một công cụ sẵn có rất mạnh mẽ để xóa các dòng trùng lặp. Dưới đây là các bước chi tiết.
2.1 Chuẩn Bị Dữ Liệu
- Mở file Excel chứa bảng dữ liệu cần xử lý.
- Đảm bảo các tiêu đề cột (header) nằm ở hàng đầu tiên và không có dòng trống giữa các dữ liệu.
- Sao lưu bản gốc: Nhấn
Ctrl + A→Ctrl + C→ Dán vào một sheet mới (hoặc một file mới) để phòng trường hợp cần khôi phục.
2.2 Thực Hiện Xóa Trùng Lặp
Bước 1: Chọn Vùng Dữ Liệu
- Nếu muốn kiểm tra toàn bộ bảng, chỉ cần đặt con trỏ vào bất kỳ ô nào trong bảng.
- Nếu muốn chỉ làm việc trên một phần (ví dụ: cột A:C), hãy bôi đen vùng dữ liệu tương ứng.
Bước 2: Mở Công Cụ “Remove Duplicates”
- Vào tab Data (Dữ liệu) trên Ribbon.
- Nhấn vào Remove Duplicates trong nhóm Data Tools.
Bước 3: Cấu Hình Các Cột Kiểm Tra Trùng Lặp
- Hộp thoại Remove Duplicates sẽ hiện lên.
- My data has headers (Dữ liệu có tiêu đề) – đánh dấu nếu bảng của bạn có tiêu đề.
- Select columns: Chọn các cột mà bạn muốn Excel dùng để xác định trùng lặp.
- Chọn tất cả nếu muốn toàn bộ hàng phải giống nhau mới được coi là trùng.
- Chọn một phần nếu chỉ một số cột quan trọng (ví dụ: Mã khách hàng, Ngày sinh).
Bước 4: Thực Hiện và Kiểm Tra Kết Quả
- Nhấn OK.
- Excel sẽ hiển thị thông báo: “Xóa thành công N dòng trùng lặp, giữ lại M dòng duy nhất”.
- Kiểm tra lại bảng để chắc chắn rằng các dòng quan trọng không bị xóa nhầm.
2.3 Lưu Ý Khi Sử Dụng “Remove Duplicates”
| Vấn đề | Giải pháp |
|---|---|
| Dữ liệu có khoảng trắng ở đầu/cuối ô | Dùng TRIM để loại bỏ trước khi xóa trùng. |
| Các giá trị case-sensitive (chữ hoa/thường) | Excel mặc định không phân biệt chữ hoa/thường; nếu cần phân biệt, dùng công thức phụ trợ. |
| Dòng trùng lặp chỉ ở một phần cột | Chọn đúng các cột trong hộp thoại. |
| Mất dữ liệu do xóa không mong muốn | Luôn sao lưu bản gốc; hoặc sử dụng filter để đánh dấu trước khi xóa. |
3. Kiểm Tra Trước Khi Xóa: Sử Dụng Conditional Formatting
Đôi khi bạn muốn xem trực quan các dòng trùng lặp trước khi quyết định xóa. Conditional Formatting (định dạng có điều kiện) là công cụ lý tưởng.
3.1 Các Bước Thực Hiện
- Chọn toàn bộ bảng (hoặc cột cần kiểm tra).
- Vào tab Home → Conditional Formatting → Highlight Cells Rules → Duplicate Values.
- Trong hộp thoại, chọn Duplicate và màu hiển thị (mặc định là Light Red Fill with Dark Red Text).
- Nhấn OK – các ô trùng lặp sẽ được tô màu.
Lưu ý: Định dạng này chỉ tô màu các ô trùng nhau, không phải toàn bộ hàng. Để tô màu toàn hàng, bạn có thể sử dụng Công thức trong Conditional Formatting:
- Chọn toàn bộ vùng dữ liệu (ví dụ A2:E1000).
- Vào Conditional Formatting → New Rule → Use a formula to determine which cells to format.
- Nhập công thức (giả sử kiểm tra cột A và B):
=COUNTIFS($A$2:$A$1000,$A2,$B$2:$B$1000,$B2)>1 - Đặt định dạng màu nền cho toàn hàng và nhấn OK.
3.2 Khi Nào Nên Dùng Conditional Formatting?
- Khi cần rà soát nhanh các bản ghi trùng lặp.
- Khi cần thảo luận với đồng nghiệp để quyết định giữ lại bản ghi nào.
- Khi đánh dấu các dòng cần kiểm tra chi tiết (ví dụ: các bản ghi có giá trị khác nhau ở một cột phụ).
4. Xử Lý Trùng Lặp Bằng Công Thức Mảng (Array Formula)
Trong một số trường hợp, bạn muốn tạo một cột phụ để tự động đánh dấu các bản ghi trùng lặp, chứ không muốn thay đổi dữ liệu gốc ngay lập tức. Công thức mảng COUNTIF hoặc COUNTIFS là lựa chọn tốt.
4.1 Công Thức Đánh Dấu Trùng Lặp Toàn Bộ Hàng
Giả sử dữ liệu nằm trong A2:D1000, muốn đánh dấu trong cột E:
=IF(COUNTIFS($A$2:$A$1000,A2,$B$2:$B$1000,B2,$C$2:$C$1000,C2,$D$2:$D$1000,D2)>1,"Duplicate","Unique")
- Sao chép công thức xuống hết cột E.
- Kết quả sẽ là “Duplicate” cho các hàng lặp và “Unique” cho các hàng duy nhất.
4.2 Công Thức Xác Định Dòng Đầu Tiên Của Mỗi Nhóm Trùng Lặp
Nếu muốn giữ lại chỉ một bản ghi (thường là dòng đầu tiên) và đánh dấu các bản sao:
=IF(COUNTIFS($A$2:A2,A2,$B$2:B2,B2,$C$2:C2,C2,$D$2:D2,D2)>1,"Duplicate","First")
- Khi công thức trả về “Duplicate”, bạn có thể lọc và xóa các hàng này.
4.3 Ưu Nhược Điểm
| Ưu điểm | Nhược điểm |
|---|---|
| Không thay đổi dữ liệu gốc, an toàn. | Công thức mảng có thể chậm trên bảng dữ liệu lớn (hàng > 50,000). |
| Dễ dàng lọc và sắp xếp dựa trên kết quả. | Cần sao chép công thức xuống toàn bộ cột, tiêu tốn không gian. |
| Có thể tùy chỉnh điều kiện phức tạp (ví dụ: chỉ trùng lặp khi cột X > 0). | Khi dữ liệu thay đổi, công thức cần cập nhật lại (đặc biệt khi thêm hàng mới). |
5. Sử Dụng Power Query (Get & Transform) Để Xóa Trùng Lặp
Power Query là một công cụ mạnh mẽ trong Excel (từ Excel 2026 trở lên) cho phép truy xuất, biến đổi và làm sạch dữ liệu. Đối với bảng dữ liệu lớn hoặc quy trình lặp lại, Power Query là lựa chọn tối ưu.

Có thể bạn quan tâm: Cách Xóa Khoảng Trống (blank Space) Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
5.1 Bước Chuẩn Bị
- Chọn bảng dữ liệu → Vào tab Data → From Table/Range.
- Nếu dữ liệu chưa phải là Table, Excel sẽ yêu cầu tạo Table. Đánh dấu My table has headers và OK.
5.2 Thực Hiện Xóa Trùng Lặp Trong Power Query
- Khi Power Query Editor mở ra, bạn sẽ thấy bảng dữ liệu ở dạng query.
- Chọn các cột mà bạn muốn dùng để xác định trùng lặp (giữ
Ctrlđể chọn nhiều cột). - Vào Home → Remove Rows → Remove Duplicates.
- Kết quả sẽ hiển thị bảng đã loại bỏ các bản ghi trùng lặp.
- Nhấn Close & Load → Dữ liệu sẽ được tải lại vào một sheet mới (hoặc hiện tại).
5.3 Ưu Điểm Của Power Query
- Tự động hoá: Khi dữ liệu nguồn thay đổi, chỉ cần Refresh (F5) là Power Query sẽ áp dụng lại các bước, bao gồm xóa trùng lặp.
- Xử lý dữ liệu lớn: Hiệu suất tốt hơn so với công thức mảng trên bảng hàng chục/nghìn.
- Lưu lại lịch sử thao tác: Mỗi bước được ghi lại, dễ dàng debug và chia sẻ quy trình.
5.4 Một Số Lưu Ý Khi Dùng Power Query
| Vấn đề | Giải pháp |
|---|---|
| Các giá trị null được coi là trùng lặp | Sử dụng Replace Values để chuyển null thành giá trị chuẩn (ví dụ: “N/A”). |
| Cột định dạng ngày không đồng nhất | Trước khi xóa trùng, chuyển cột về Date thống nhất bằng Transform → Data Type. |
| Khi tải lại, bảng đè lên dữ liệu cũ | Chọn Load To → Only Create Connection nếu muốn giữ dữ liệu gốc và tạo một bản sao mới. |
6. Xóa Trùng Lặp Bằng VBA (Macro)
Đối với những người thường xuyên thực hiện cùng một quy trình xóa trùng lặp, việc tự động hoá bằng VBA sẽ tiết kiệm thời gian đáng kể.
6.1 Mã VBA Cơ Bản
Sub RemoveDuplicateRows() Dim ws As Worksheet Dim rng As Range 'Thiết lập sheet hiện tại Set ws = ActiveSheet 'Xác định vùng dữ liệu (có tiêu đề ở hàng 1) Set rng = ws.Range("A1").CurrentRegion 'Xóa trùng lặp dựa trên tất cả các cột rng.RemoveDuplicates Columns:=Array(1, 2, 3, 4), Header:=xlYes MsgBox "Hoàn thành! Đã xóa các dòng trùng lặp.", vbInformation
End Sub
- Columns:=Array(1,2,3,4): Định nghĩa các cột được xét (cột A, B, C, D). Thay đổi tùy nhu cầu.
- Header:=xlYes: Bảng có tiêu đề.
6.2 Macro Nâng Cao: Xóa Trùng Lặp Theo Nhiều Tiêu Chuẩn & Ghi Log
Sub RemoveDupAndLog() Dim ws As Worksheet, logWs As Worksheet Dim dataRng As Range, uniqRng As Range Dim lastRow As Long, logRow As Long Set ws = ThisWorkbook.Sheets("Data") 'Tên sheet chứa dữ liệu Set logWs = ThisWorkbook.Sheets("Log") 'Sheet ghi log Set dataRng = ws.Range("A1").CurrentRegion 'Giả sử dữ liệu bắt đầu ở A1 'Xác định cột cần xét (ví dụ: cột A, C, D) Dim colArr As Variant colArr = Array(1, 3, 4) 'Sao chép dữ liệu gốc vào sheet Log để lưu lại bản sao logRow = logWs.Cells(logWs.Rows.Count, "A").End(xlUp).Row + 1 dataRng.Copy Destination:=logWs.Cells(logRow, 1) 'Xóa trùng lặp dataRng.RemoveDuplicates Columns:=colArr, Header:=xlYes 'Thông báo kết quả MsgBox "Đã xóa trùng lặp dựa trên các cột đã chọn.", vbInformation
End Sub
- Log sheet: Giúp bạn lưu lại bản sao dữ liệu trước khi xóa, rất hữu ích cho việc audit.
- colArr: Bạn có thể tùy chỉnh để xét bất kỳ cột nào.
6.3 Khi Nào Nên Dùng VBA?
- Khi quy trình lặp đi lặp lại hàng ngày/tuần.
- Khi cần ghi lại lịch sử (log) các lần xóa.
- Khi muốn kết hợp với các thao tác khác (ví dụ: xóa hàng có giá trị rỗng, chuẩn hoá dữ liệu).
7. Xử Lý Trường Hợp Đặc Biệt
7.1 Trùng Lặp Chỉ Dựa Trên Một Phần Giá Trị
Đôi khi bạn chỉ muốn xét một phần của chuỗi ký tự, ví dụ:
- Mã sản phẩm: “ABC-001”, “ABC-002” – muốn xem chỉ phần “ABC” có trùng hay không.
- Số điện thoại: “+84 123 456 789”, “0123 456 789” – muốn chuẩn hoá và kiểm tra trùng dựa trên 9 chữ số cuối.
Cách thực hiện:
- Thêm cột phụ dùng công thức
LEFT,RIGHT,MID,SUBSTITUTEđể trích xuất phần cần so sánh. - Sử dụng Remove Duplicates hoặc COUNTIFS dựa trên cột phụ này.
Ví dụ: Trích xuất 3 ký tự đầu của mã sản phẩm:
=LEFT(A2,3)
Sau đó, xóa trùng lặp dựa trên cột mới.
7.2 Trùng Lặp Khi Có Dấu Cách, Dấu Gạch Nối, Hoặc Kiểu Định Dạng Khác
- Dùng hàm TRIM, SUBSTITUTE, CLEAN để loại bỏ khoảng trắng, ký tự đặc biệt.
- Ví dụ: Chuẩn hoá số điện thoại:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2," ",""),"-",""),"+84","0")
Sau khi chuẩn hoá, áp dụng Remove Duplicates.
7.3 Xóa Trùng Lặp Trong Bảng Pivot
Pivot Table thường tự động gộp dữ liệu, nhưng nếu nguồn dữ liệu có trùng lặp, bạn có thể:
- Làm sạch nguồn dữ liệu (xóa trùng) trước khi tạo Pivot.
- Hoặc sử dụng tính năng “Distinct Count” (đếm duy nhất) trong trường giá trị của Pivot (Excel 2026+).
8. Kiểm Tra & Xác Nhận Sau Khi Xóa
Sau khi thực hiện xóa trùng, luôn kiểm tra lại để đảm bảo không có bản ghi quan trọng bị mất.
8.1 Kiểm Tra Thống Kê
- COUNT: Đếm số dòng trước và sau khi xóa.
- COUNTIF: Kiểm tra số lần xuất hiện của một giá trị quan trọng (ví dụ: mã khách hàng) – phải bằng 1 nếu không có trùng lặp.
=COUNTIF(A:A,"MãKH001")
8.2 So Sánh Hai Bảng (Before & After)
Nếu bạn đã sao lưu bản gốc vào một sheet khác, có thể dùng công cụ Compare Sheets (có trong một số add-in) hoặc công thức VLOOKUP để kiểm tra:
=IF(ISERROR(VLOOKUP(A2,Original!A:A,1,FALSE)),"New","Exists")
8.3 Kiểm Tra Dòng Đầu Tiên Của Mỗi Nhóm Trùng Lặp
Sử dụng Conditional Formatting với công thức COUNTIFS để tô màu chỉ các dòng đầu tiên hoặc sao chép.
9. Thực Hành: Bài Tập Thực Tế
9.1 Bài Tập 1: Xóa Trùng Lặp Dựa Trên Mã Khách Hàng
- Dữ liệu: Cột A = “Mã KH”, Cột B = “Tên”, Cột C = “Ngày sinh”.
- Yêu cầu: Giữ lại bản ghi mới nhất (theo cột “Ngày cập nhật” ở cột D).
Giải pháp:
- Sắp xếp dữ liệu giảm dần theo cột D (Ngày cập nhật).
- Dùng Remove Duplicates chỉ chọn cột A (Mã KH). Vì dữ liệu đã sắp xếp, bản ghi đầu tiên sẽ là mới nhất.
- Kiểm tra lại bằng Conditional Formatting.
9.2 Bài Tập 2: Xử Lý Trùng Lặp Khi Dữ Liệu Được Nhập Từ Nhiều File
- Nhiệm vụ: Ghép 5 file CSV vào một sheet, sau đó xóa trùng dựa trên cột “Số hóa đơn” và cột “Ngày”.
- Sử dụng Power Query:
- Import từng file → Append Queries → Remove Duplicates → Load.
9.3 Bài Tập 3: Tự Động Hóa Với VBA
- Viết macro để:
- Kiểm tra sheet “Data”.
- Xóa trùng lặp dựa trên cột A và B.
- Ghi log vào sheet “Log” kèm thời gian thực hiện.
Mã mẫu:
Sub AutoRemoveDup() Dim ws As Worksheet, logWs As Worksheet Dim rng As Range, dupCount As Long Set ws = Sheets("Data") Set logWs = Sheets("Log") Set rng = ws.Range("A1").CurrentRegion dupCount = rng.Rows.Count - Application.WorksheetFunction.Subtotal(103, rng.Columns(1)) rng.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes With logWs .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = "Run at " & Now & _ " - Removed " & dupCount & " duplicate rows." End With
End Sub
10. Tổng Kết và Những Điều Cần Nhớ
- Xác định mục tiêu: Bạn muốn xóa trùng dựa trên toàn bộ hàng hay một số cột? Đặt quy tắc rõ ràng trước khi thực hiện.
- Luôn sao lưu dữ liệu gốc. Dùng Copy to new sheet, Create a backup file, hoặc Log sheet.
- Công cụ cơ bản:
Remove Duplicates→ nhanh, dễ dùng cho dữ liệu vừa và nhỏ. - Conditional Formatting: Giúp visualize các bản ghi trùng lặp trước khi xóa.
- Công thức mảng: Thích hợp cho kiểm tra nhanh hoặc khi không muốn thay đổi dữ liệu gốc.
- Power Query: Lựa chọn mạnh mẽ cho dữ liệu lớn, quy trình lặp lại, và tự động hoá.
- VBA: Khi công việc lặp lại thường xuyên hoặc cần ghi log, macro là giải pháp tối ưu.
- Xử lý đặc biệt: Chuẩn hoá dữ liệu (trim, substitute), trích xuất phần cần so sánh, và xử lý các ký tự đặc biệt.
- Kiểm tra lại: Dùng COUNT, COUNTIF, VLOOKUP, hoặc Pivot để xác nhận kết quả.
- Cập nhật quy trình: Khi có thay đổi dữ liệu nguồn, hãy refresh Power Query hoặc run macro lại để duy trì dữ liệu sạch.
Việc loại bỏ các dòng trùng lặp trong Excel không chỉ giúp bạn có được dữ liệu chính xác, mà còn nâng cao hiệu suất làm việc, giảm thiểu lỗi trong các báo cáo và phân tích. Hy vọng qua bài viết này, bạn đã nắm vững từ các cách đơn giản nhất đến các kỹ thuật nâng cao, sẵn sàng áp dụng vào mọi tình huống thực tế.
Chúc bạn thành công trong việc làm sạch dữ liệu và khai thác tối đa giá trị từ Excel!

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
